WHERE子句中的SQL Server CASE表达式以检查NULL值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WHERE子句中的SQL Server CASE表达式以检查NULL值相关的知识,希望对你有一定的参考价值。

我尝试在SQL Server中执行此查询:

select * from users where case when 1=1 then name is null else true end;

但我收到此错误:

关键字“ is”附近的语法不正确

此查询在mysql中成功运行。您能告诉我SQL Server中此查询的等效内容吗?

答案

您可以在下面尝试-

select * from users where (case when 1=1 then name end) is null
另一答案

您不能做这样的表达,语法是错误的。

如果要选择条件,则必须使用逻辑运算符:

where (1=1 and name is null)
   or (1<>1 and 1=1)

我用始终评估为true(true)的条件替换了1=1,因为true本身是查询中的另一个语法错误。

另一答案

尝试一下。

select * from users where iif(name = null, cast(0 as bit), 1) is null

以上是关于WHERE子句中的SQL Server CASE表达式以检查NULL值的主要内容,如果未能解决你的问题,请参考以下文章

WHERE子句中的SQL Server CASE表达式以检查NULL值

sql不允许在where子句比较中使用case变量[重复]

如何在 SQL Server 的 Where 子句中使用 case 语句

括号内的 SQL Server CASE 子句

SQL:WHERE 子句中的 IF/CASE 语句

SQL Server:IF .. ELSE 中的 Where 子句