2017-01-19 3 views
0

5つの値に基づいてデータを取得する必要があるストアドプロシージャがありますが、値の1つが空の場合があります。しかし、カラムは空ではなくNULLなので、どういうわけかNULLであるかどうかを確認する必要があります。ここでSQL Server:使用可能な場合はデータをチェックします。IS NULLを使用します。

は私のコードです:

SELECT UVC 
FROM [Blackbook].[VehicleUvc] 
WHERE Year = @Year 
    AND Make = @Make 
    AND Model = @Model 
    AND Series = @Series 
    AND Style = @Style 

ので@Seriesは時々空の文字列ですので、私はそれ以外の場合は、それが現在やっているんだろう、それが空であるとき、それがnullであるかどうかを確認することが必要になります、通常の値に基づいてデータをルックアップします。それは私がコード内で行うことができるか、変数を宣言するときに何かする必要があるのでしょうか?

ような何か:それは列がnullのとき「それらが一致するよ「変数があるので、もし」」としてそれを取るヌルだ場合は、テーブルの列にISNULLを使用することができます

IF (@Series = '') { Series IS NULL } ELSE { Series = @Series } 

答えて

1

SELECT UVC 
FROM [Blackbook].[VehicleUvc] 
WHERE ISNULL(Year, '') = @Year 
    AND ISNULL(Make, '') = @Make 
    AND ISNULL(Model, '') = @Model 
    AND ISNULL(Series, '') = @Series 
    AND ISNULL(Style, '') = @Style 
+1

これは、これらの変数がすべて空の文字列に設定されていない場合(これらがすべてvarcharsであることが前提であることを前提としている場合)のみ有効です。 nullがnullと等しくないことを忘れないでください。変数に「デフォルト値」の並べ替えを指定しない場合、where句は列に何をしても当てはまりません。私はあなたのサンプル擬似コードが示唆していることを知っていますが、明示的に気づくことが重要です。 – Xedni

関連する問題