[英]IS NULL vs = NULL in where clause + SQL Server
如何檢查值IS NULL [or] = @param
(其中@param為null)
例如:
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.
這怎么能實現?
select column1 from Table1
where (@param is null and column2 is null)
or (column2 = @param)
我意識到這是一個古老的問題,但我有同樣的問題,並想出了另一個(更短的)答案。 注意:這可能僅適用於支持ISNULL(expr,替換)的MS SQL Server。
SELECT column1 FROM table1
WHERE ISNULL(column2,'') = ISNULL(@param,'')
這也假設您以相同的方式處理NULL和空字符串。
對此沒有“一刀切”的查詢方法,對於如何執行此操作會產生微妙的性能影響。 如果你想超越只是讓查詢返回正確的答案,無論它有多慢,請閱讀本文關於T-SQLby Erland Sommarskog的動態搜索條件
這是x = @x或@x IS NULL部分的鏈接
WHERE ((COLUMN1 = @PARAM) OR (COLUMN1 IS NULL AND @PARAM IS NULL))
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 ) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.