SELECT * FROM USERS其中userid =(空或'')是t sql查询是否有效?

-9 .net c# sql sql-server

SELECT * 
  FROM users
 WHERE userid = (null OR '')  
Run Code Online (Sandbox Code Playgroud)

这个TSql查询userid = (null OR '') 有效吗?

Dmi*_*nko 6

比较

 userid = (null OR '')  
Run Code Online (Sandbox Code Playgroud)

无效的。首先,语法非常错误:

 field = (value1 OR value2) 
Run Code Online (Sandbox Code Playgroud)

应该放在

(field = value1) OR (field = value2)  
Run Code Online (Sandbox Code Playgroud)

或作为

 field IN (value1, value2) 
Run Code Online (Sandbox Code Playgroud)

其次,null是一个特殊的值,代表未知无关紧要,不适用等。这就是为什么null = null不等于True而是等于null未知等于未知吗?未知)。为什么null = nullTrue(例如GroupBy)有一些例外。但是,为了安全起见,请勿放置field = nullfield in (..., null, ...),而是field is null。就你而言

SELECT * 
  FROM users
 WHERE (userid is null) 
    OR (userid = '')
Run Code Online (Sandbox Code Playgroud)