-9 .net c# sql sql-server
SELECT *
FROM users
WHERE userid = (null OR '')
Run Code Online (Sandbox Code Playgroud)
这个TSql查询userid = (null OR '') 有效吗?
比较
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 = null是True(例如GroupBy)有一些例外。但是,为了安全起见,请勿放置field = null或field in (..., null, ...),而是field is null。就你而言
SELECT *
FROM users
WHERE (userid is null)
OR (userid = '')
Run Code Online (Sandbox Code Playgroud)