在 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 语句执行等效逻辑。有没有更好的办法?重新设计表/数据类型是一种选择。