簡體   English   中英

在where子句+ SQL Server中IS NULL vs = NULL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM