我的表中有一个数字列id
。我想选择在 1,2,3 中具有 id 的查询和在其中具有“null”的查询。
我不想使用如下查询:
SELECT * FROM MYTABLE WHERE ID IN (1,2,3) OR ID IS NULL
我可以使用类似的东西:
SELECT * FROM MYTABLE WHERE ID IN (1,2,3,null)
这可能吗?上面的查询返回的结果与
SELECT * FROM MYTABLE WHERE ID IN (1,2,3)
我的表中有一个数字列id
。我想选择在 1,2,3 中具有 id 的查询和在其中具有“null”的查询。
我不想使用如下查询:
SELECT * FROM MYTABLE WHERE ID IN (1,2,3) OR ID IS NULL
我可以使用类似的东西:
SELECT * FROM MYTABLE WHERE ID IN (1,2,3,null)
这可能吗?上面的查询返回的结果与
SELECT * FROM MYTABLE WHERE ID IN (1,2,3)
简短的回答?不,您必须使用IS NULL
谓词。NULL != NULL(两个 NULL 值不一定相等),所以任何类型的equals NULL
,in (..., NULL)
都不起作用。
如果您使用 oracle,这可能是解决方案。
SELECT * FROM MYTABLE WHERE NVL(ID,-1) IN (1,2,3,-1)
您必须使用:
SELECT * FROM MYTABLE WHERE ID IN (1,2,3) OR ID IS NULL
NULL 总是需要对 IS NULL 进行特殊处理。
在 sql 服务器中
SELECT * FROM MYTABLE WHERE isnull(ID,0) IN (1,2,3,0)