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