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