了解SQL案例条件

时间:2016-07-26 11:25:17

标签: sql sql-server sql-server-2012

我试图更好地理解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。

任何人都可以解释为什么会这样吗?

由于

1 个答案:

答案 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;