我想过滤一条记录......
如果statusid为null,则过滤记录(其中statusId不为空)
如果statusid不为null,则过滤statusid等于指定statusid的记录。
我该怎么做?
答案 0 :(得分:51)
就像你说的那样
select * from tbl where statusid is null
或
select * from tbl where statusid is not null
如果你的statusid不为null,那么当你有一个实际值时它会被选中就好了,如果那是你想的那样就不需要任何“if”逻辑
select * from tbl where statusid = 123 -- the record(s) returned will not have null statusid
如果要选择null或值的位置,请尝试
select * from tbl where statusid = 123 or statusid is null
答案 1 :(得分:3)
statusid = statusid怎么样? Null永远不会等于null。
答案 2 :(得分:2)
WHERE something IS NULL
和
WHERE something IS NOT NULL
答案 3 :(得分:1)
关闭ansi_nulls 走 从表t中选择* 在t.statusid = o.statusid上连接otherTable o 走 设置ansi_nulls 去
答案 4 :(得分:0)
我认为这可行:
select * from tbl where statusid = isnull(@statusid,statusid)
答案 5 :(得分:0)
无论您何时尝试检查列的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
。