美元引用
是一种特殊的字符串引用语法,用于避免与转义字符(如单引号和反斜杠)相关的問題。
美元引用
在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文档: 美元引号字符串常量