SQL 查询 - 如何按 null 或不为 null 进行过滤

Posted

技术标签:

【中文标题】SQL 查询 - 如何按 null 或不为 null 进行过滤【英文标题】:SQL Query - how do filter by null or not null 【发布时间】:2011-03-28 03:25:55 【问题描述】:

我想过滤一条记录....

如果statusid为null,过滤记录(statusId不为null)

如果statusid不为null,过滤statusid等于指定statusid的记录。

我该怎么做?

【问题讨论】:

【参考方案1】:

就像你说的

select * from tbl where statusid is null

select * from tbl where statusid is not null

如果你的 statusid 不为空,那么当你有一个实际值时它会被选中,如果你想的是,不需要任何“if”逻辑

select * from tbl where statusid = 123 -- the record(s) returned will not have null statusid

如果你想选择它是空还是值,试试

select * from tbl where statusid = 123 or statusid is null

【讨论】:

查看我最后添加的包含“或”的内容【参考方案2】:

statusid = statusid 怎么样。 Null 永远不会等于 null。

【讨论】:

【参考方案3】:
WHERE something IS NULL

WHERE something IS NOT NULL

【讨论】:

【参考方案4】:

设置 ansi_nulls 关闭 去 从表 t 中选择 * t.statusid = o.statusid 上的内部连接 ​​otherTable o 去 设置 ansi_nulls 去

【讨论】:

【参考方案5】:

我认为这可行:

select * from tbl where statusid = isnull(@statusid,statusid)

【讨论】:

【参考方案6】:

无论您在何处尝试检查列的 NULL 值,都应使用IS NULLIS NOT NULL你不应该使用 =NULL 或 ==NULL

示例(NULL)

select * from user_registration where registered_time IS NULL 

将返回 registered_time 值为 NULL 的行

示例(非空)

select * from user_registration where registered_time IS NOT NULL 

将返回 registered_time 值为 NOT NULL 的行 注意:关键字nullnot nullisnot case sensitive

【讨论】:

以上是关于SQL 查询 - 如何按 null 或不为 null 进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

sql 如何优先显示不为空的字段 并进行排序

sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?

C#中如何判断数据库中int字段为Null

SQL - 更新查询 - 更新到下一个不为 NULL 的日期值

sql 查询null 变为0

查找值不为null的列sql语句