通常の文字列に書いたバックスラッシュ
Windows のパスのように、通常の '…' の中にバックスラッシュを書いた例です。エスケープとして扱われず文字そのものになることを、情報で確かめます。
入力
SQL
SELECT 'C:\dir'
E'…' と U&'…' のエスケープを展開して表示する
はい
結果
エラー 0 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 1 行目 通常の '…' の中のバックスラッシュは、既定(standard_conforming_strings = on)では文字そのものです。改行やタブを文字で書くには E'…' にします(4.1.2.2)。
| 文字列リテラルの数 | 1 個 |
|---|---|
| 通常 '…' | 1 個 |
| E'…' | 0 個 |
| U&'…' | 0 個 |
| ドル引用符 | 0 個 |
文字列リテラルの一覧
| # | 種類 | 開始位置 | 内容 |
|---|---|---|---|
| 1 | 通常 '…' | 1 行目 | C:\dir |
検算(この結果になる理由)
既定(standard_conforming_strings = on)では、通常の '…' の中のバックスラッシュはエスケープではなく文字そのものです(4.1.2.2 節)。内容は C:\dir のまま取り出され、その旨の情報が 1 件出ます。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 完全な SQL の構文解析はしません。文字列が実際にどの式に使われているか、型は何かまでは判定しません。
- コメントをはさんだ隣接リテラルの連結や、standard_conforming_strings を off にした設定での動作は扱いません(既定の on を前提にします)。
- UESCAPE で別のエスケープ文字を指定した U&'…' は展開せず、警告を出します。
- ビット列(B'…'・X'…')などの特殊な定数は文字列リテラルとして取り出しません。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。