2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLSeverのIN句でバインド変数を使う

Posted at

要件

  • べた書きのSQLしか作れません
  • ORマッパーは利用できません
  • プログラムで動的に条件句を編集することもできません
    • 文字列をカンマ区切りで繋げることくらいは可能

という絶望的な制約の中でIN句を動的に設定する必要が出てきました。
なお当方にストアドプロシージャの知識はありません。

解決策

SQLServerならSTRING_SPLITに文字列と区切り文字を渡せばサブクエリとしてIN句の条件に使えます。(参考)

サンプル

select
  id,
  name
from
  employee
where
  id in (
    select
      value
    from
      STRING_SPLIT('001,002,003', ',')
  )  

おわりに

ORマッパー使えないのはキツいけど製品の制約なのでどうしようもないのですが、この場合は正直言って素直にストアドプロシージャ使った方が良いような気がします。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?