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

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

oracle=1000
postgreSQL=2000上限無し →こちらは2000個ではなく、語彙の長さが2kバイトのようでした。
mySQL=上限無し(但しSQL文字数上限に引っかかる)

※指摘頂き、修正します。
postgreSQLは2000個を超えても大丈夫みたいで、inに使用する1つの文字の長さ上限が2kバイトのようです。

参考:
https://www.postgresql.jp/document/9.5/html/textsearch-limitations.html

以下、過去に書いたものはミスリードになるので、消し文字にします。

更に、下の参考サイト様で書いてある方法で、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