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 5 years have passed since last update.

IN句で使うプレースホルダ部分を作成する方法

Posted at

はじめに

SQLの条件部分を動的に作成したい時があると思います。
具体的には、IN句に設定する値が動的に変化する場合です。

SELECT foo FROM sample_table
WHERE bar IN (?, ?, ?, ?, ?); -- ここの?の数が定まらない時に対処したい。

このようなSQLはパフォーマンスに問題が発生しがちではありますが、小規模案件では許容されることがほとんどではないでしょうか。
忘れたころにやってくる問題というイメージがあり、愚直にfor文を使えば書けますが、そろそろ簡潔に書きたいと思います。

Javaによる実装

int size = 10; // 作成したい?の数
String placeholders = IntStream.range(0, size)
                               .boxed()
                               .map(i -> "?")
                               .collect(Collectors.joining(", ", "(", ")"));
System.out.println(placeholders);
// (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

おわりに

個人的に(各言語において)革新的な書き方が見つかったら追記していきたいと思います。

2
1
1

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?