2009-04-20 20 views
1

結果セットをフィルタリングするためにLIKEキーワードを使用するSQL文を作成する必要があります。ときどきこの値はNULLです。動的WHERE文 - SQL Server 2005

T-SQLで実装する最も良い方法は何ですか?私はSQLサーバー2005を使用しています

答えて

1

合体を使用してください!

COALESCE(filter, '%') 

編集:これはおそらく間違った方法ですが、それはオプションだと思います。

4

「提供されていません」という意味に依存します。それがNULLを意味する場合は、いつでも試すことができます

私はこれも時にはより速く動作することがわかりました。

ISNULL(Table.Column, @myParameter) = @myParameter 

また、あなたはパラメータを持っているか、「%」で@myParameter移入していない場合は、動的にちょうどWHERE句の一部OMMIT、コードからTSQLを構築している場合。

0
SELECT 
lalala 
WHERE 1=1 
and (
    value like '%'[email protected]+'%' 
    or @search = '' 
) 

私は...個人的に

+0

%側がある場合、@searchが "とにかく"であればすべてが一致します。この場合は、正確に一致している場合にのみORを必要とします。 –

0

それが実行されますかどうかはわかりませんが、これは私がVB/C#コードでのSQLステートメントを構築し、だけではないだろうな状況の一種であります私がそれを持っていなかったら最後にLIKE句を連結してください。

ちょっと好きなのは、準備されたステートメントの2つのバージョンを持ち、1つはLIKE句があり、もう1つはLIKE句がないことです。必要に応じて適切なステートメントを呼び出します。