tSQL中的CASE语句控制执行

5

我知道如何使用case语句返回不同的值:

SELECT CASE Color
         WHEN 'Blue' THEN 'Water'
         WHEN 'Black' THEN 'Oil'
         WHEN 'Red' THEN 'Blood'
       END
  FROM dbo.Liquid

有没有一种方法可以使用它来控制流程,而不是使用IF-ELSE,即:
DECLARE @Color varchar()
SELECT @Color = Color FROM dbo.Liquid WHERE ID = @MyID

CASE (@Color)
  WHEN 'Blue' THEN SELECT 'Water'
  WHEN 'Black' THEN SELECT 'Oil'
  WHEN 'Red' THEN PRINT 'HELP! I''m bleeding!'
END
2个回答

9

1
不,你需要使用IF语句来实现这个逻辑,因为在CASE语句中,你基本上是返回一个值。你可以像这样做:
declare @result varchar(500)

SET @result =
CASE
  WHEN @Color = 'Blue' THEN 'Water'
  WHEN @Color = 'Black' THEN 'Oil'
  WHEN @Color = 'Red' THEN 'HELP! I''m bleeding'
END

IF @Color = 'Red'
  PRINT @result

但我认为这可能是你能做的最好的了。个人而言,我会在这里使用IF语句,因为那是最好的选择。


这就是我一直在做的事情。似乎有一种使用CASE / SWITCH语句的方法,但我猜T-SQL没有(除了我在第一个示例中使用的方式)。 - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接