濮阳杆衣贸易有限公司

主頁 > 知識庫 > Postgresql 數據庫轉義字符操作

Postgresql 數據庫轉義字符操作

熱門標簽:廣州電銷機器人公司招聘 400電話申請客服 濟南外呼網絡電話線路 江蘇400電話辦理官方 電話機器人怎么換人工座席 地圖標注要花多少錢 天津開發(fā)區(qū)地圖標注app 移動外呼系統(tǒng)模擬題 電銷機器人能補救房產中介嗎

產生問題

Postgresql數據庫運行下面insert命令

insert into mapping_mac_brand(_id,mac,brand) values(777,'D86595','Toy\'s Myth Inc.')

提示下面的警告:

Warning: nonstandard use of ' in a string literal

HINT: Use '' to write quotes in strings or use the escape string syntax(E...')

解決辦法

1.名詞解釋

string literal :字符串字面量

escape string:轉義字符串

escape character:轉義字符

Escape Sequence:轉義字符串

轉義字符:

所有的ASCII碼都可以用“\”加數字(一般是8進制數字)來表示。而C中定義了一些字母前加"\"來表示常見的那些不能顯示的ASCII字符,如\0,\t,\n等,就稱為轉義字符,因為后面的字符,都不是它本來的ASCII字符意思了。

在Java中,不管是String.split(),還是正則表達式,有一些特殊字符需要轉義, 這些字符是 ( [ { / ^ - $ ¦ } ])。

Java中轉義方法為字符前面加上"\\",這樣在split、replaceAll時就不會報錯了; 不過要注意,String.contains()方法不需要轉義。

但是對于下面表格指定的字符,還是一個\即可轉義。比如\n。

2.常見的轉義字符

字母前面加上反斜線"\"來表示那些不能顯示的ASCII字符.稱為轉義字符.如\0,\t,\n等,就稱為轉義字符,因為后面的字符,都不是它本來的ASCII字符意思了。

所有的轉義字符和所對應的意義:

轉義字符

意義

ASCII碼值(十進制)

\a

響鈴(BEL)

007

\b

退格(BS) ,將當前位置移到前一列

008

\f

換頁(FF),將當前位置移到下頁開頭

012

\n

換行(LF) ,將當前位置移到下一行開頭

010

\r

回車(CR) ,將當前位置移到本行開頭

013

\t

水平制表(HT) (跳到下一個TAB位置)

009

\v

垂直制表(VT)

011

\\

代表一個反斜線字符''\'

092

'

代表一個單引號(撇號)字符

039

\"

代表一個雙引號字符

034

\0

空字符(NULL)

000

\ddd

1到3位八進制數所代表的任意字符

三位八進制

\xhh

1到2位十六進制所代表的任意字符

二位十六進制

3.解決方法

1.修改數據庫配置,讓數據庫支持\作為轉義字符

早期Postgresql普通字符串中的\是作為轉義字符對待的,所以\\最終會認為是\。但是這是不符合SQL標準的,所以在PG 9.1及以后,普通字符串中的\不會被任務是轉義字符,而E'xx\x'中的\才會被當作是轉義字符。

為了使以前的代碼可以在新的PG版本中運行,便有了standard_conforming_strings這個選項,這個選項默認是on,表示按照SQL標準處理字符串,當設置為off時,按照PG的舊版本處理字符串。運行下面命令,開啟這個選項即可:

ALTER ROLE xx IN DATABASE yy SET standard_conforming_strings TO off;

2. 用新版本支持的轉義字符。''或者 E'',將含有轉義的字符串放在單引號里面

'\\' 或者 E'\\'

補充:PG特殊字符的轉義

實例1

imos=# select * from test;
 name 
------
 c_d
 ab
 _b_c
(3 rows)

imos=# select * from test where name like '_b%';
 name 
------
 ab
 _b_c
(2 rows)

imos=# select * from test where name like 'd_b%' escape 'd';
 name 
------
 _b_c
(1 row)
imos=# select * from test where name like '\_b%' ;
 name 
------
 _b_c
(1 row)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 解決postgresql 數字轉換成字符串前面會多出一個空格的問題
  • postgreSQL 數字與字符串類型轉換操作
  • postgresql 實現16進制字符串轉10進制數字

標簽:濮陽 海西 寶雞 杭州 辛集 榆林 昭通 溫州

巨人網絡通訊聲明:本文標題《Postgresql 數據庫轉義字符操作》,本文關鍵詞  Postgresql,數據庫,轉義,字符,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Postgresql 數據庫轉義字符操作》相關的同類信息!
  • 本頁收集關于Postgresql 數據庫轉義字符操作的相關信息資訊供網民參考!
  • 推薦文章
    福州市| 宁蒗| 湘阴县| 砚山县| 越西县| 沅江市| 马尔康县| 山阴县| 高清| 金湖县| 汝南县| 通许县| 张掖市| 临城县| 乐安县| 武清区| 江北区| 汽车| 宜兰市| 龙岩市| 石渠县| 伊宁市| 清水河县| 长顺县| 改则县| 左贡县| 鄢陵县| 东丽区| 罗平县| 台湾省| 垦利县| 简阳市| 涟源市| 镇巴县| 定西市| 高邮市| 灵山县| 七台河市| 调兵山市| 岳普湖县| 乌兰浩特市|