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 NULL 和 IS 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
的行
注意:关键字null
、not null
和is
是not case sensitive
。
【讨论】:
以上是关于SQL 查询 - 如何按 null 或不为 null 进行过滤的主要内容,如果未能解决你的问题,请参考以下文章
sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?