2016-08-10 9 views
1

SELECT a,b FROM foo WHERE a=a and b=bと同じですか?SELECT a,b FROM fooこれらのクエリは同じですか?

私はそれらを実行すると異なる結果になります。

最終的に、と私は私のSSRSレポートのパラメータを設定しようとしています:NULLはAまたはB NULLのどこかにありますので、あなたは異なる結果を得る

SET @a Varchar (20) DECLEARE @a = Null SET @b Varchar (20) DECLEARE @b = Null SELECT a,b FROM foo WHERE a=isnull(@a,a) and b=isnull(@b,b)

答えて

1

するSQL Serverで等しくないNULLを行います

これを代わりに使用してください。

SELECT a, b FROM foo 
WHERE (@a ISNULL or a [email protected]) AND (@b ISNULL or [email protected]) 

また、変数を設定する前に、変数を宣言する必要があります。

+1

あなたは回避策を知っていますか? –

+0

@ H.Ben nullパラメータを扱う方法を追加しました – scsimon

0

両方のクエリは、aまたはbにNULL値を持つことに基づいて同じ結果セットを返しません。

NULLがNULLと等しくないためです。

+0

これは(常に)真ではありません。 OPは彼は別の結果を得たと述べた。 – scsimon

+0

あなたの答えは正しいです。私はnullがnullと等しくないことに気付かなかった。 – Ripon

+1

SQL Serverについて覚えておくと良いことです。これはCOUNT(*)とCOUNT([column])の間でも重要です – scsimon

関連する問題