IS NULL vs = where句でのNULL + SQL Server

sql sql-server tsql
IS NULL vs = where句でのNULL + SQL Server

値をチェックする方法 IS NULL [or] = @ param(@paramはnull)

Ex:

Select column1 from Table1
where column2 IS NULL => works fine

比較値(IS NULL)を@paramに置き換えたい場合。 どのようにこれを行うことができます

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.

これはどのように達成できますか?

  15  3


ベストアンサー

select column1 from Table1
  where (@param is null and column2 is null)
     or (column2 = @param)

36


これは古い質問ですが、同じ質問があり、別の(短い)答えを思いつきました。 _注:これは、ISNULL(expr、replacement)をサポートするMS SQL Serverでのみ機能します。

SELECT column1 FROM table1
WHERE ISNULL(column2,'') = ISNULL(@param,'')

これは、NULLと空の文字列を同じように扱うことも想定しています。

3


これには「すべてに適合する」クエリアプローチはありません。これを行うには微妙なパフォーマンスへの影響があります。 クエリが適切な答えを返すように_beyond_したい場合は、それがどんなに遅くても、http://www.sommarskog.se/dyn-search.htmlのこの記事をご覧ください。 SQLby Erland Sommarskog]

2


WHERE ((COLUMN1 = @PARAM) OR (COLUMN1 IS NULL AND @PARAM IS NULL))

1


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 )  )

0


タイトルとURLをコピーしました