- Home
- SQL Server
- NULLを含めたあいまい(LIKE)検索
NULLを含めたあいまい(LIKE)検索
- 2016/7/28
- SQL Server
- LIKE検索, NULL, あいまい検索 NULL
- 2 comments
コンボボックスで「全て」が選択された場合に、NULLの行も取得したい場合。
想定
下記のような社員マスタと部署マスタがある。
この社員マスタから部署を検索条件として社員を検索する際に、ドロップダウンリストで下記のように部署を選択させたい。
ドロップダウンリストの「全て」のコード「*」は「%」の間違いです。後日訂正します。
ドロップダウンリストの内容は部署マスタから取得する。
「山田ペー」は新入社員なので部署が決まっていない。
このため、部署コードはNULLである。
LIKEを使用する場合の制約
ドロップダウンリストに「全て」がない場合は、LIKE演算子を使用しなくて、「=」を使用すればいいだけの話。
ただ全てがあるため、「全て」が選択されたら全社員の情報を出さなければならない。
この場合、下記の条件文で検索を行うことになる。
1 2 3 4 5 6 7 |
DECLARE @value varchar(max) = '%' -- @value変数には、ドロップダウンリストのコードが入る SELECT * FROM 社員マスタ WHERE 部署コード LIKE @value |
しかし、NULLの判定は「IS NULL」「IS NOT NULL」でしか行えないため、LIKE演算子を使用しても「山田ペー」は取得できない。
NULLを含む全件を取得するには
この場合、NULLを別の値に置き換えて、検索すればよい。
1 2 3 4 5 6 7 |
DECLARE @value varchar(max) = '%' -- @value変数には、ドロップダウンリストのコードが入る SELECT * FROM 社員マスタ WHERE (CASE WHEN 部署コード IS NULL THEN '' ELSE 部署コード END) LIKE @value |
「CASE WHEN」の部分は「ISNULL(部署コード,”) LIKE @value」に置き換えられると思います。
コメント
この記事へのトラックバックはありません。
Where句にCase文を書くことができるんですね!まさに今自分がやりたいこととマッチしていて大変助かる記事でした、ありがとうございました。
ブログを読んでくださり、ありがとうございます。
お役に立てて、うれしいです。