gpt4 book ai didi

sql-server - 嵌套 IF ELSE 的可行 T-SQL 替代方案,用于 CASE 失败的比较

转载 作者:行者123 更新时间:2023-12-02 08:44:05 27 4
gpt4 key购买 nike

在 T-SQL 中是否有一个可行的替代方案来替代嵌套的 IF ELSE 进行比较,其中必须根据比较的结果发生不同的逻辑?我的情况涉及选择代表评估条件的 nvarchar 值,并根据条件进行评估。我最初试图在 CASE 语句中实现这一点,如下所示:

SELECT
CASE @condition
WHEN '<' THEN

IF (@processing_time < @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END

WHEN '<=' THEN
IF (@processing_time <= @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '>' THEN
IF (@processing_time > @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '>=' THEN
IF (@processing_time >= @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
WHEN '=' THEN
IF (@processing_time = @threshold_value)
BEGIN
SET @condition_met = 1 --compare threshold_value and processing_time
END
END -- end case statement

但是,根据我在其他地方看到的情况和我得到的语法错误,case 语句中的 WHEN 子句似乎只能赋值,不能执行评估逻辑。我能想到的唯一替代方法是使用嵌套的 IF/ELSE 语句执行等效逻辑。有没有更好的办法?重新设计表/数据类型是一种选择。

最佳答案

我这里没有数据库来检查此语法中是否有错别字,但这应该可以..

set @condition_met = (SELECT 
CASE WHEN (@condition = '<' AND @processing_time < @threshold_value) OR
(@condition = '<=' AND @processing_time <= @threshold_value) OR
(@condition = '>' AND @processing_time > @threshold_value) OR
(@condition = '>=' AND @processing_time >= @threshold_value) OR
(@condition = '=' AND @processing_time = @threshold_value)
THEN 1 ELSE 0 END)

或者你可以简单地做一系列 IF 语句来做同样的事情,例如

SET @condition_met = 0;
IF @condition = "<" AND @processing_time < @threshold_value SET @condition_met = 1;
IF @condition = "<=" AND @processing_time <= @threshold_value SET @condition_met = 1;
etc..

关于sql-server - 嵌套 IF ELSE 的可行 T-SQL 替代方案,用于 CASE 失败的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com