我试图更好地理解SQL Case Function的工作原理。
比如说我在查询中有以下代码,而value1 ='ABCDE'
SELECT CASE ColumnName
WHEN value1 LIKE '%ABC%' THEN 'Hello'
WHEN value1 LIKE '%CDE%' THEN 'World'
ELSE 'Nothing'
END AS Answer
FROM TableName
我对此代码将返回的内容感到困惑。
我认为从阅读它应该返回HelloWorld,但运行类似的查询我发现它只返回Hello。
任何人都可以解释为什么会这样吗?
由于
答案 0 :(得分:5)
CASE
表达式由一系列WHEN
/ THEN
子句组成。每个条款都测试一个条件。
CASE
表达式在第一个 WHEN
条件处停止,该条件的计算结果为true并返回THEN
值。在你的例子中,那将是“你好”。
注意:如果您在ColumnName
子句中有条件,则CASE
之后的WHEN
是语法错误。我认为这是一个错字,因为你的查询返回了一些内容。
如果要连接值,请使用如下表达式:
SELECT ((CASE WHEN value1 LIKE '%ABC%' THEN 'Hello' ELSE '' END) +
(CASE WHEN value1 LIKE '%CDE%' THEN 'World' ELSE '' END)
) AS Answer
FROM TableName;