行リストをSQLのIN句・配列リテラルに変換

1行1値(またはカンマ・タブ区切り)をSQLのIN句やPostgreSQL配列、JSON・Python・JavaScriptの配列に即時変換。数値の自動判定、シングルクォートのエスケープ、重複除去、折り返しに対応し、IN句から1行1値への逆変換もできます。

1行1値 → IN句・配列

Oracle Databaseでは1つのIN句に指定できる要素数が1000個までという制限があります(超えるとORA-01795)。件数が多い場合は本ツールで分割するか、一時テーブルとの結合を検討してください。

IN句・配列 → 1行1値(逆変換)

先頭の IN / ARRAY と、外側の丸カッコ・角カッコは自動的に取り除きます。シングルクォート('' でエスケープ)・ダブルクォート(\" でエスケープ)のどちらにも対応します。

使い方

  1. 上の欄に値を1行1値(またはカンマ・タブ・スペース区切り)で貼り付けます。
  2. 「出力形式」でSQLのIN句、PostgreSQL配列、JSON・Python・JavaScriptの配列、カンマ区切り1行から選びます。
  3. 数値らしい値をクォートなしで出す・重複を除く・1行あたりの個数で折り返す、をそれぞれ切り替えられます。
  4. 下部では逆にIN句や配列リテラルを貼り付けると、1行1値のリストに戻せます。

仕組み・計算式

SQLの文字列リテラルはANSI SQL(SQL標準)でシングルクォートを1つの値として扱い、値の中にシングルクォートを含めるには2つ並べて書く('')と定義されています。本ツールはこの規則に従って自動でエスケープします。JSON配列への変換はJSON.stringifyを使うためRFC 8259のJSON文字列エスケープに厳密に従い、Python・JavaScriptの配列はバックスラッシュによるエスケープ(\\、\'、\nなど)で出力します。数値かどうかの自動判定は符号・小数点を含む一般的な数値表記の正規表現にマッチする値だけをクォートなしで出力する仕組みです。

現場の落とし穴: 数値の自動判定は「00123」のような先頭ゼロ付きのコード(郵便番号・社員番号・伝票番号など)も数値とみなしてクォートなしで出力します。SQL上は値として問題なくても、文字列型カラムに対するIN句としては型が食い違う場合があるため、コード類を扱うときは「数値の扱い」を「すべて文字列として扱う」に切り替えてください。またOracle DatabaseはIN句に指定できる要素数が1000個までという制限(超えるとORA-01795)があるため、大量の値を渡す場合は折り返し設定で分割するか、一時テーブルとのJOINへの置き換えを検討してください。

よくある質問

Q. カンマを含む値やタブを含む値はどう扱われますか?

A. 「区切り方」で改行のみを区切りに指定すれば、値自体にカンマやタブが含まれていても1つの値として扱われます。自動判定は複数行があれば改行区切りを優先するため、値にカンマを含む場合は改行区切りで入力するのが安全です。

Q. IN句の逆変換はどこまで対応していますか?

A. IN (...)やARRAY[...]のような先頭キーワードと外側のカッコを除去したうえで、シングルクォート(''でエスケープ)・ダブルクォート(\"でエスケープ)で囲まれた値と、クォートなしの数値をカンマ区切りで分解します。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 開発・データ