美元引用是一种特殊的字符串引用语法,用于避免单引号和反斜杠等字符转义带来的问题。
美元引用在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文档: 美元引用的字符串常量
