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 標準的一部分,可是在書寫複雜字符串文字方面,它經常是一種比兼容標準的單引號語法更方便的方法。當要表示的字符串常量位於其餘常量中時它特別有用,這種狀況經常在過程函數定義中出現。若是用單引號語法,上一個例子中的每一個反斜線將必須被寫成四個反斜線,這在解析原始字符串常量時會被縮減到兩個反斜線,而且接着在函數執行期間從新解析內層字符串常量時變成一個。

相關文章
相關標籤/搜索