0

我的表中有一个数字列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)
4

4 回答 4

3

简短的回答?不,您必须使用IS NULL谓词。NULL != NULL(两个 NULL 值不一定相等),所以任何类型的equals NULL,in (..., NULL)都不起作用。

于 2012-05-10T05:30:53.387 回答
1

如果您使用 oracle,这可能是解决方案。

SELECT * FROM MYTABLE WHERE NVL(ID,-1) IN (1,2,3,-1)
于 2012-05-10T05:31:09.923 回答
0

您必须使用:

SELECT * FROM MYTABLE WHERE ID IN (1,2,3) OR ID IS NULL

NULL 总是需要对 IS NULL 进行特殊处理。

于 2012-05-10T05:31:05.990 回答
0

在 sql 服务器中

SELECT * FROM MYTABLE WHERE isnull(ID,0) IN (1,2,3,0)
于 2012-05-10T07:31:16.417 回答