美元引用
是一种用于引用字符串的特殊语法,以避免与转义字符(如单引号和反斜杠)相关的問題。
美元引用
在 PostgreSQL 8.0 中添加。
用法
在标准 SQL 中,字符串常量中包含的单引号需要加倍,以便字符串能够被正确解析,例如:
postgres=# SELECT 'PostgreSQL''s powerful string functions'; ?column? ---------------------------------------- PostgreSQL's powerful string functions (1 row)
虽然对于短字符串来说这可能不是什么问题,但对于较长的文本来说,它很快就会成为一个问题。美元引用
通过将文本括在两个美元符号 ($$
) 之间提供了一种解决方法。
postgres=# SELECT $$PostgreSQL's powerful string functions$$; ?column? ---------------------------------------- PostgreSQL's powerful string functions (1 row)
包含在美元引号内的文本被视为字符串文字,即不需要转义(并且没有可以应用的转义)。
标签
可以提供一个可选的“标签”(一个或多个任意字符),以创建唯一的引号对(如果字符串旨在包含可以解释为美元引号的文字,则需要此标签),例如:
postgres=# SELECT $foo$PostgreSQL's dollar quoting with '$$' or e.g. '$bar$' is convenient $foo$; ?column? ---------------------------------------------------------------------- PostgreSQL's dollar quoting with '$$' or e.g. '$bar$' is convenient (1 row)
标签可以是任何有效的字符序列,遵循与未加引号的标识符相同的规则,即除了下划线 (_
) 之外,不能包含 ASCII 符号(包括美元符号 ($
) 本身),并且不能以 ASCII 数字开头。
以下是美元引用标签的有效示例
$$abc$$
$$abc123$$
$$_$$
$$ほげ$$
$$1$$
(双宽度字符)$$;$$
(双宽度字符)
以下是美元引用标签的无效示例
$$123abc$$
$$;$$
$$abc+$$
$$ $$
(空格)
请注意,其中许多不会被 psql 解释。
更改历史记录
- PostgreSQL 8.0
- 添加(提交 58e70532)
参考
- PostgreSQL 文档: 美元引用的字符串常量