SQL IN句作成
値リストをSQLのIN句へ整形し、クオート・エスケープ・NULL扱い・重複除去をまとめて調整できるツールです。大量件数時の分割出力にも対応し、貼り付け前の事故を減らします。
何ができるか
改行/CSV/TSVの値一覧から、`IN (...)` もしくは `WHERE col IN (...)` を生成できます。
文字列エスケープ、数値判定、NULLの扱い、重複除外を一画面で確認できます。
入力件数: 0 | 出力件数: 0 | NULL検出: 0 | 数値不正除外: 0 | 重複除外: 0
注意(クリックで開く)
不特定入力をSQL文字列に直接貼り付ける運用は危険です。実運用ではプレースホルダとバインド変数を優先してください。
入力内容がURLクエリに含まれるため、共有時は公開してよい条件値のみ扱ってください。
入力データは原則ブラウザ内で処理します。機密情報は入力しないでください。
使い方
- 値リストを貼り付け、区切り(自動/改行/CSV/TSV)を選びます。
- 文字列または数値モードを選択し、必要ならNULLの扱いを指定します。
- 重複除去や空行除外を調整し、必要なら1000件超の分割出力をONにします。
- 生成SQLを確認し、「SQLをコピー」で貼り付けます。
判断基準
最初に「数値として扱う列か」「文字列として扱う列か」を決めてから投入すると安全です。迷う場合は文字列モードで生成し、DB側型に合わせて調整してください。
よくある失敗
- 数値モードで `00123` を投入し、先頭ゼロが欠落した条件になる。
- NULLをIN句に混ぜてしまい、意図した絞り込み結果にならない。
- 大量IDを1句に詰め込み、DB側のリスト上限でエラーになる。
境界条件
- この出力は文字列組み立て補助であり、SQL実行時の権限や性能最適化までは扱いません。
- 一般的には本番運用でプレースホルダ+バインド変数が推奨され、直貼りSQLは限定用途に留めます。
- DB製品ごとのIN句件数制限は異なるため、実運用では公式仕様を確認してください。
具体例
- 改行入力 `A-001 / A-002` → `WHERE id IN ('A-001', 'A-002')`
- `O'Reilly` を含む入力 → `O''Reilly` に自動エスケープ
失敗しやすい入力例
数値モードで文字列値を混在させる
クォート不足でSQL構文エラーになる可能性があります。
例: 入力例: 100, A-001(数値モード) / 出力: 不正IN句
NULL文字列とSQL NULLを混同する
"NULL" と NULL は意味が異なります。
例: 判断ポイント: NULL扱い設定を明示して出力確認
境界値・例外ケース
大量件数のIN句
DB制限で1文に入れられる要素数上限を超える場合があります。
例: 判断ポイント: 分割出力設定を有効にして生成
シングルクォートを含む値
値中の `'` はSQLエスケープが必要です。
例: 入力例: O'Reilly / 出力: 'O''Reilly'
よくあるミス
重複除去を無効のまま運用する
不要な値重複でクエリ効率が落ちることがあります。
例: 運用例: 大量リスト時は重複除去を有効化
生成SQLをWHERE句へそのまま貼り忘れる
IN句単体と完全SQLの選択を誤ると実行失敗します。
例: 判断ポイント: 出力モード(INのみ/WHERE含む)を確認
FAQ
シングルクォートはどう扱われますか?
文字列モードでは `''` へエスケープして出力します。
NULLはIN句に含めるべきですか?
通常は `IS NULL` と分けるほうが明確です。本ツールでは除外/警告/含めるを切り替えできます。
1000件を超える値はどうすべきですか?
DBによって制約があるため分割実行を推奨します。分割出力ONで `OR` 連結の形にできます。
数値モードと文字列モードの見分け方は?
列型が数値でも、先頭ゼロや英字混在の可能性があるIDは文字列モードを推奨します。純粋な数値キーだけ数値モードにしてください。
基本FAQ
入力データは外部へ送信されますか?
原則として送信されません。入力内容はブラウザ内で処理します。例外がある場合は各ツールページ内に明記しています。
入力内容は自動保存されますか?
原則として自動保存しません。コピーやダウンロードで保存する場合は、ご利用端末内に保存されます。
関連ツール
現在の入力内容とあわせて確認しやすいツールです。