如何检查值IS NULL [or] = @param
(其中@param为空)
例如:
Select column1 from Table1
where column2 IS NULL => works fine
如果我想用@param替换比较值(IS NULL)。怎么做呢
Select column1 from Table1
where column2 = @param => this works fine until @param got some value in it and if is null never finds a record.
这怎么能实现?
答案 0 :(得分:36)
select column1 from Table1
where (@param is null and column2 is null)
or (column2 = @param)
答案 1 :(得分:5)
我意识到这是一个古老的问题,但我有同样的问题,并想出了另一个(更短的)答案。 注意:这可能仅适用于支持ISNULL(expr,替换)的MS SQL Server。
SELECT column1 FROM table1
WHERE ISNULL(column2,'') = ISNULL(@param,'')
这也假设您以相同的方式处理NULL和空字符串。
答案 2 :(得分:2)
对此没有“一刀切”的查询方法,在执行此操作时会产生微妙的性能影响。如果你想超越只是让查询返回正确答案,无论它有多慢,请查看Dynamic Search Conditions in T-SQLby Erland Sommarskog上的这篇文章
部分的链接答案 3 :(得分:1)
WHERE ((COLUMN1 = @PARAM) OR (COLUMN1 IS NULL AND @PARAM IS NULL))
答案 4 :(得分:0)
Select column1 from Table1
where (column2 IS NULL and @param IS NULL)
or ( column2 IS NOT NULL AND @param IS NOT NULL AND ( column2 = @param ) )