2016-08-11 13 views
0

Webアプリケーションでは、値が空でない場合は検索基準を含めることができます。のみ値が空でない場合、WHERE句に検索条件を追加します。

Dim sQuery as string = SELECT * FROM MERCHANT_CATEGORY WHERE 1=1 
If sCatDesc <> "" Then sQuery &= "AND CAT_DESC LIKE '%' + @CAT_DESC + '%' " 

上記のようにするにはどうすればよいですか? @CatDescが空の文字列値であり、そして私のレコードCAT_DESCのいずれかがnullの場合、以下の私は

SELECT * FROM MERCHANT_CATEGORY WHERE 1=1 
AND CAT_DESC LIKE '%' + @CatDesc + '%' 

をクエリに使用され、結果はNULL値のないそれらのレコードを表示します。

SELECT * 
FROM MERCHANT_CATEGORY 
WHERE ((@CatDesc IS NULL) OR (CAT_DESC LIKE '%' + @CatDesc + '%')) 

注意あなたが任意のより多くの1=1を必要としません:

答えて

1

は、クエリのこのフォームを使用することができます。

+0

まだNULLが表示されていないCAT_DESCレコードの場合 – belltric

+0

私はMERCHANT_CATEGORY * FROM SELECT SQLを変更((CAT_DESCがnullで、@ CatDesc = '')OR(CAT_DESC LIKE '%' + @CatDesc + '%')) は、ヌル結果もときに表示します@ CatDesc = '' – belltric

+0

あなたの質問をあなたの更新されたコードで編集して、あなたが望む出力をより明確に説明してください。私はあなたが今何をしているのか分かりません。 – Blorgbeard

0

これを試すことができます。

select * from table 
where (CAT_DESC like '%'[email protected]+"%" and @CATDESC is not null ) 
or 
(CAT_DESC is null or CAT_DESC="" and @CATDESC is null) 
0
select * 
from table 
where cat_desc like '%' + isnull(@catdesc, '') + '%' 
0

我々は、WHERE句にIIF評価を追加することはできますか?例:

については

Select * from table 
    where cat_desc like 
     (iif(@cat_desc is not null,"@cat_desc", "'*' or cat_desc is null") 

これは、where句に適切な文字列値をスローします。

ie。 @cat_descがnullでなければ、@ cat_descがnullの場合は文字列を評価する--- cat_desc like '*'またはcat_descがnullの場合

関連する問題