背景:
今天碰到一個問題,就是postgresql中怎麼在引號中定義變量,想了各種方法,也沒有解決,下面是我找到的神似的內容。
正文
在PostgreSQL 9之前的版本中,可以直接使用反斜槓\進行轉義;比如:\b表示退格, \n表示換行, \t表示水平製表符,\r標示回車,\f表示換頁。除此之外還支持\digits和\xhexdigits,分別表示轉義八進制和十六進制數據。
但是在PostgreSQL 9之後的版本,反斜槓已經變成了普通字符;如果想要使用反斜槓來轉義字符,就必須在需要轉義的字符串前面加上E(E就是Escape),如下:
select E'張\t小明';
對單引號的兩種轉義方式
在SQL標準中字符串是用單引號括起來的,而在PostgreSQL中遵守了該標準,雙引號則是用來表示變量的,如果在字符串中需要使用到單引號,就需要對其進行轉義。
方式一:使用E和反斜槓進行轉義
select E'\'233';
方式二:直接用一個單引號來轉義單引號
select '''233';
這兩種方式都能得到’233的結果而不會報錯,第二種方式比較簡單,也可以通過修改standard_conforming_strings參數的值來讓反斜槓從普通字符變回轉義字符:
查詢並修改該參數的值:
show standard_conforming_strings;
SET standard_conforming_strings = on;
SET standard_conforming_strings = off;
當該參數的值爲off時就可以直接使用反斜槓作爲轉義字符裏,如下:
select '\'233';
將會得到’233的結果而不會報錯。