SQL 識別子の引用符
テキスト処理はすべてブラウザ内で完結します。データは送信されません
用途は 2 つあり、それぞれ実際の場面に対応します。 引用符を付ける:MySQL 風の SQL を Postgres / Oracle へ移すときです。MySQL の識別子は既定で大文字小文字を区別しませんが、Postgres は引用符のない識別子を小文字に畳みます —— `userID` という列は `userid` になって「列が存在しません」で落ちます。元の大文字小文字を保つには二重引用符が要ります。 引用符を外す:Postgres が出力した `"users"` や `"userID"` を裸の識別子に戻します。読みやすくなり、引用符を嫌う古いツールにもそのまま貼れます。 ⚠️ 最も重要な規則:文字列リテラルとコメントの中身には 1 文字も触れません。 「単語を全部引用符で囲む」素朴な実装は `INSERT INTO t VALUES ('active')` を `'"active"'` にします —— データに引用符が 2 つ増え、しかも文はそのまま実行できてしまうため、気付くのはデータを読むときです。そこで小さなスキャナーを使い、文字列・コメント・既に引用された識別子はまるごと飛ばします。 外せない引用符は残します。 `"user id"`(空白入り)、`"order"`(予約語)、`"2fa"`(数字始まり)はいずれも裸では不正な識別子です。この場合は引用符を残し、件数を報告します。実行できない SQL を出すよりはるかにましだからです。
機能
- テーブル名・列名・別名などの識別子に二重引用符を一括で付与
- 既存の二重引用符とバッククォートを除去(バッククォートは 3 社が認める二重引用符に統一)
- ⚠️ 文字列リテラルの中身には 1 文字も触れません(`''` エスケープも含む)
- `--` 行コメントと `/* */` ブロックコメントの中身にも触れません
- SQL の予約語には引用符を付けません(`select` に付けると列名になってしまいます)
- 非 ASCII の識別子にも引用符を付けます(中国語のテーブル名も保たれます)
- 除去時に裸で書けない名前は引用符を残し、件数を報告します
- 行ごとにコピーでき、説明文がコピー内容に混ざりません
使い方
- SQL を貼り付けます
- 「二重引用符を付ける」か「外す」を選びます
- 結果は即座に更新されます。コピーして取り出してください
よくある質問
- 文字列の中身は変更されませんか?
- 変更しません。これがこのツールで最も重要な規則です。`INSERT INTO t VALUES ('active')` の `active` はデータであって識別子ではありません。引用符を付けると `'"active"'` になり、増えた 2 つの引用符は実際にデータベースへ保存されます。しかも文はそのまま実行できるため、問題が分かるのはデータを読み出すときです。コメントも同じ理由でまるごと飛ばします。
- 予約語に引用符を付けないのはなぜですか?
- `select` に引用符を付けると、予約語から `select` という名前の列名に変わってしまい、文の意味がその場で変わるからです。一般的な予約語は内蔵の表に入れてあり、そこにない珍しい語に付けた場合は「列が存在しません」で即座に失敗します —— 黙って意味が変わることはありません。
- 除去しても外れない引用符があるのはなぜですか?
- 外すと名前が不正になるからです。3 つの場合があります:空白や特殊文字を含む(`"user id"` は 2 語に割れる)、予約語(`"order"` は `ORDER BY` と衝突する)、数字始まり(`"2fa"` は有効な識別子ではない)。この場合は引用符を残し、該当する名前が何個あったかを知らせます。実行できない SQL を出すより、引用符が数個残るほうがはるかにましです。
関連ツール
テキスト整形
テキストログや表からコピーした1列を整形します。重複行の削除、並べ替え、空行・前後の空白・行番号の削除、空白のまとめを個別に切り替えできます。
命名規則の変換
テキスト14 の命名規則の間で識別子を変換します。fooBarBaz や FOO_BAR のような混在も語に分解し、連続する大文字も語ごとに切ります。
JSON 整形
整形JSON をブラウザ内で整形・圧縮・検証。折りたたみ可能なツリーで表示し、キーと値の検索、行番号とハイライト付きの編集、Python dict への変換にも対応。
テキスト差分
テキスト2つのテキストを行ごとに比較し、追加・削除・未変更の行をハイライト表示します。変更は最小差分で整列し、すべてブラウザ内で処理します。
文字数カウント
テキスト英語は単語数、日本語や中国語は字数で別々に数えます。文字数・行数・バイト数・読了時間も同時に出し、すべてブラウザ内で処理するので送信しません。
簡体字・繁体字変換
テキスト中国語を簡体字と繁体字の間で相互変換します。常用語は語単位で置換し、残りは最も一般的な字形を採るため、一部は人の確認が必要です。