SQLのCASE式を使用した条件分岐の切り替え

前提

入力フォームから受け取った情報をもとに検索するストアドを作成しています。

実現したいこと

入力フォームに社員名を入力した場合、社員名を部分一致で検索
入力されなかった場合、すべての社員を検索

該当のソースコード

「@StaffName」は入力フォームに入力された社員名が格納されています。

sql

select *from Staff A where case @StaffName IS NOT NULL THEN A.StaffName like '%'+@StaffName+'%'

下記のURLの「条件の有無をcase式で記述するサンプル」の書き方を参考にしていますが、
「LIKE付近に不適切な構文があります」というエラーが発生します。

https://style.potepan.com/articles/23548.html#:~:text=2%20%E3%81%BE%E3%81%A8%E3%82%81-,SQL%E3%81%AEwhere%E3%81%A7case%E5%BC%8F%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%9D%A1%E4%BB%B6,%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82

補足情報(FW/ツールのバージョンなど)

自分が使っているDBがsqlserver、リンク先のサンプルはMySQLという違いがあるのですが、
それによって挙動が変わっている可能性はあるでしょうか。

コメントを投稿

0 コメント