PostgreSQL中美圆符号引用的字符串常量

虽然用于指定字符串常量的标准语法一般都很方便,可是当字符串中包含了不少单引号或反斜线时很难理解它,由于每个都须要被双写。要在这种情形下容许可读性更好的查询,PostgreSQL提供了另外一种被称为“美圆引用”的方式来书写字符串常量。一个美圆引用的字符串常量由一个美圆符号($)、一个可选的另个或更多字符的“标签”、另外一个美圆符号、一个构成字符串内容的任意字符序列、一个美圆符号、开始这个美圆引用的相同标签和一个美圆符号组成。例如,这里有两种不一样的方法使用美圆引用指定字符串“Dianne’s horse”:函数

$$Dianne’s horse$$字符串

$SomeTag$Dianne’s horse$SomeTag$io

注意在美圆引用字符串中,单引号能够在不被转义的状况下使用。事实上,在一个美圆引用字符串中不须要对字符进行转义:字符串内容老是按其字面意思写出。反斜线不是特殊的,而且美圆符号也不是特殊的,除非它们是匹配开标签的一个序列的一部分。function

能够经过在每个嵌套级别上选择不一样的标签来嵌套美圆引用字符串常量。这最常被用在编写函数定义上。例如:语法

$function$引用

BEGIN方法

RETURN ($1 ~ $q$[\t\r\n\v\\]$q$);查询

END;兼容

$function$标签

这里,序列$q$[\t\r\n\v\\]$q$表示一个美圆引用的文字串[\t\r\n\v\\],当该函数体被PostgreSQL执行时它将被识别。可是由于该序列不匹配外层的美圆引用的定界符$function$,它只是一些在外层字符串所关注的常量中的字符而已。一个美圆引用字符串的标签(若是有)遵循一个未被引用标识符的相同规则,除了它不能包含一个美圆符号以外。标签是大小写敏感的,所以$tag$String content$tag$是正确的,可是$TAG$String content$tag$不正确。一个跟着一个关键词或标识符的美圆引用字符串必须用空白与之分隔开,不然美圆引用定界符可能会被做为前面标识符的一部分。

美圆引用不是SQL 标准的一部分,可是在书写复杂字符串文字方面,它经常是一种比兼容标准的单引号语法更方便的方法。当要表示的字符串常量位于其余常量中时它特别有用,这种状况经常在过程函数定义中出现。若是用单引号语法,上一个例子中的每一个反斜线将必须被写成四个反斜线,这在解析原始字符串常量时会被缩减到两个反斜线,而且接着在函数执行期间从新解析内层字符串常量时变成一个。

相关文章
相关标签/搜索