3
我在SQL(Server 2008)中使用CASE语句时存在一个普遍问题,并且您的WHEN条件中有多个条件为真,但结果标志将不同。CASE语句SQL:情况优先?
这是一个假设的例子,但在跨多列应用检查以对行中的数据进行分类时可能是可转移的。以下代码的输出取决于案件的排序方式,因为两者都是正确的。
DECLARE @TESTSTRING varchar(5)
SET @TESTSTRING = 'hello'
SELECT CASE
WHEN @TESTSTRING = 'hello' THEN '0'
WHEN @TESTSTRING <> 'hi' THEN '1'
ELSE 'N/A'
END AS [Output]
一般来说,以这种方式创建标志会被认为是不好的做法吗? OR WHERE,OR语句会更好吗?
我一直认为他们为了评估它们发生在代码的顺序,但仔细想来,我从来没有实际验证过。 – Brandon
从逻辑上说,它是按它编码的顺序排列的。当第一个遇到时,'CASE'将停止,然后第二个然后是其他部分。你测试过了吗? – CodeBird
-1对此没有做任何研究。您可以在Microsoft网站上找到所需的信息。 – Kapol