SQL の文字列リテラル一覧
SQL に埋まった文字列リテラルを、種類と行つきで取り出す。
SQL を貼り付けると、'…'・E'…'・U&'…'・ドル引用符の文字列リテラルを一覧にします。'' の二重化や E'…' のエスケープを展開し、コメントと二重引用符つき識別子は除外します。入力はブラウザの外へ送信しません。
SQL を貼り付けて文字列リテラルを取り出す
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 1 行目 2 つの文字列が改行をはさんで並んでいるため、1 つの定数に連結しました(4.1.2.1)。
| 文字列リテラルの数 | 3 個 |
|---|---|
| 通常 '…' | 2 個 |
| E'…' | 0 個 |
| U&'…' | 0 個 |
| ドル引用符 | 1 個 |
文字列リテラルの一覧
| # | 種類 | 開始位置 | 内容 |
|---|---|---|---|
| 1 | 通常 '…' | 1 行目 | it's |
| 2 | 通常 '…' | 1 行目 | foobar |
| 3 | ドル引用符 $f$ | 2 行目 | x'y |
初期表示は入力例「引用符の二重化・連結・ドル引用符が混ざった SQL」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。
使い方
- ログやマイグレーションファイルから、調べたい SQL をコピーして貼り付けます。
- E'…' や U&'…' の中身を、書かれたままで見たいときは展開のチェックを外します。
- 表で種類・開始位置・内容を確かめ、ベタ書きされた値や引用符の使い方に問題がないかを見ます。
- 指摘がある場合は、連結の書き方やバックスラッシュの扱いを直して貼り直します。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 引用符の二重化・連結・ドル引用符が混ざった SQL | エラー 0 件・警告 0 件・情報 1 件 |
| E'…' のエスケープを展開する | エラー 0 件・警告 0 件・情報 0 件 |
| U&'…' の Unicode エスケープ | エラー 0 件・警告 0 件・情報 0 件 |
| 通常の文字列に書いたバックスラッシュ | エラー 0 件・警告 0 件・情報 1 件 |
| 改行なしで並んだ 2 つの文字列 | エラー 1 件・警告 0 件・情報 0 件 |
| 閉じていないドル引用符 | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- 完全な SQL の構文解析はしません。文字列が実際にどの式に使われているか、型は何かまでは判定しません。
- コメントをはさんだ隣接リテラルの連結や、standard_conforming_strings を off にした設定での動作は扱いません(既定の on を前提にします)。
- UESCAPE で別のエスケープ文字を指定した U&'…' は展開せず、警告を出します。
- ビット列(B'…'・X'…')などの特殊な定数は文字列リテラルとして取り出しません。
よくある質問
'it''s' はどう読まれますか?
単一引用符の中の '' は引用符 1 文字を表すため、it's という 1 つの文字列として取り出します(4.1.2.1 節)。
通常の文字列の中の \n は改行になりますか?
既定の設定(standard_conforming_strings が on)では、通常の '…' の中のバックスラッシュは文字そのものです。改行やタブを文字で書くには E'…' にします(4.1.2.2 節)。
貼り付けた SQL はどこかに送られますか?
送られません。取り出す処理はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。