用于检查空值的WHERE子句中的SQL Server大小写表达式

用于检查空值的WHERE子句中的SQL Server大小写表达式,sql,sql-server,Sql,Sql Server,我尝试在SQL Server中执行此查询: select * from users where case when 1=1 then name is null else true end; 但我有一个错误: 关键字“is”附近的语法不正确 此查询在MySQL中成功运行。你能告诉我这个查询在SQL Server中的等价物吗?你不能这样表达,语法是错误的 如果要选择条件,必须使用逻辑运算符: where (1=1 and name is null) or (1<>1 and 1=

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

select * from users where case when 1=1 then name is null else true end;
但我有一个错误:

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


此查询在MySQL中成功运行。你能告诉我这个查询在SQL Server中的等价物吗?

你不能这样表达,语法是错误的

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

where (1=1 and name is null)
   or (1<>1 and 1=1)
其中(1=1且名称为空)
或(11和1=1)

我将
true
替换为总是求值为true的条件(
1=1
),因为
true
本身就是查询中的另一个语法错误。

你不能这样表达,语法是错误的

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

where (1=1 and name is null)
   or (1<>1 and 1=1)
其中(1=1且名称为空)
或(11和1=1)

我将
true
替换为总是求值为true的条件(
1=1
),因为
true
本身就是查询中的另一个语法错误。

查询背后的逻辑是什么?查询背后的逻辑是什么?它起作用,但我不知道为什么case语句不起作用:(@Nico您需要阅读,在SQL Server上,它是一个CASE表达式而不是CASE语句,这意味着CASE表达式的结果是一个值而不是一个条件。它可以工作,但我不知道CASE语句为什么不能工作:(@Nico您需要读取,在SQL Server上,它是一个CASE表达式而不是CASE语句,这意味着CASE表达式的结果是一个值而不是一个条件。