in句の上限_oracle,PostgreSQL,mySQL比較

なんとなくイメージ的に、in句の上限って1000だっけ、って思って改めて調べたら、
DBによりました。

oracle=1000
postgreSQL=2000
mySQL=上限無し(但しSQL文字数上限に引っかかる)

更に、下の参考サイト様で書いてある方法で、PostgreSQLで2000上限を突破する方法があるようです。

select unnest(ARRAY[....複数設定]) as dat

この方法で配列を疑似的にテーブル扱いとしてぶっこんで
そのまま使えるようです。

ARRAYが配列表現。
unnestが配列→行変換。

試しに文字型、int型の両方でサンプルを作ってみました。

select unnest(ARRAY['str1','str2','str_z']) as dat
select unnest(ARRAY[1,2,3]::int[]) as dat



参考:
http://kei0310.info/?p=210
https://qiita.com/choplin/items/9d5e2ff8721fb9509bf8