理解SQL案例条件
我试图更好地理解SQL Case函数的工作原理 例如,假设我在查询中有以下代码,value1='ABCDE'理解SQL案例条件,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我试图更好地理解SQL Case函数的工作原理 例如,假设我在查询中有以下代码,value1='ABCDE' SELECT CASE ColumnName WHEN value1 LIKE '%ABC%' THEN 'Hello' WHEN value1 LIKE '%CDE%' THEN 'World' ELSE 'Nothing' END AS Answer FROM TableName 我对这段代码将返回的内
SELECT CASE ColumnName
WHEN value1 LIKE '%ABC%' THEN 'Hello'
WHEN value1 LIKE '%CDE%' THEN 'World'
ELSE 'Nothing'
END AS Answer
FROM TableName
我对这段代码将返回的内容感到困惑
通过阅读,我假设它应该返回HelloWorld,但运行了类似的查询后,我发现它只返回Hello
有人能解释为什么会这样吗
谢谢CASE表达式由一系列
WHEN
/THEN
子句组成。每个子句测试一个条件
CASE
表达式在计算结果为true的第一个条件时停止,然后返回值。在您的示例中,这将是“你好”
注意:如果在WHEN
子句中有条件,则CASE
之后的ColumnName
是一个语法错误。我认为这是一个输入错误,因为您的查询返回了一些内容
如果要串联这些值,请使用以下表达式:
SELECT ((CASE WHEN value1 LIKE '%ABC%' THEN 'Hello' ELSE '' END) +
(CASE WHEN value1 LIKE '%CDE%' THEN 'World' ELSE '' END)
) AS Answer
FROM TableName;
CASE
表达式由一系列WHEN
/THEN
子句组成。每个子句测试一个条件
CASE
表达式在计算结果为true的第一个条件时停止,然后返回值。在您的示例中,这将是“你好”
注意:如果在WHEN
子句中有条件,则CASE
之后的ColumnName
是一个语法错误。我认为这是一个输入错误,因为您的查询返回了一些内容
如果要串联这些值,请使用以下表达式:
SELECT ((CASE WHEN value1 LIKE '%ABC%' THEN 'Hello' ELSE '' END) +
(CASE WHEN value1 LIKE '%CDE%' THEN 'World' ELSE '' END)
) AS Answer
FROM TableName;
当
同时出现时,我最好说“在
大小写之后的列名
和谓词
之后的是一个语法错误。”@Gordon Linoff请检查这个@NeerajPrasadSharma。我同意这可能是一个错误。但问题是案例
返回什么。如果不严格地解释“短路”,那么可以在返回任何内容之前对所有表达式进行求值。这些可能会返回一个错误。@GordonLinoff那么,如果第一个语句被发现为true,它会跳过其他语句吗?或者它也比较了其他的吗?我最好说“在CASE
之后的ColumnName
和predicate
之后的WHEN
同时是一个语法错误。”@Gordon Linoff请检查这个@NeerajPrasadSharma。我同意这可能是一个错误。但问题是案例
返回什么。如果不严格地解释“短路”,那么可以在返回任何内容之前对所有表达式进行求值。这些可能会返回一个错误。@GordonLinoff那么,如果第一个语句被发现为true,它会跳过其他语句吗?或者它是否也能与其他产品进行比较??