濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作

Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作

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

產(chǎn)生問(wèn)題

Postgresql數(shù)據(jù)庫(kù)運(yùn)行下面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:轉(zhuǎn)義字符串

escape character:轉(zhuǎn)義字符

Escape Sequence:轉(zhuǎn)義字符串

轉(zhuǎn)義字符:

所有的ASCII碼都可以用“\”加數(shù)字(一般是8進(jìn)制數(shù)字)來(lái)表示。而C中定義了一些字母前加"\"來(lái)表示常見(jiàn)的那些不能顯示的ASCII字符,如\0,\t,\n等,就稱為轉(zhuǎn)義字符,因?yàn)楹竺娴淖址疾皇撬緛?lái)的ASCII字符意思了。

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

Java中轉(zhuǎn)義方法為字符前面加上"\\",這樣在split、replaceAll時(shí)就不會(huì)報(bào)錯(cuò)了; 不過(guò)要注意,String.contains()方法不需要轉(zhuǎn)義。

但是對(duì)于下面表格指定的字符,還是一個(gè)\即可轉(zhuǎn)義。比如\n。

2.常見(jiàn)的轉(zhuǎn)義字符

字母前面加上反斜線"\"來(lái)表示那些不能顯示的ASCII字符.稱為轉(zhuǎn)義字符.如\0,\t,\n等,就稱為轉(zhuǎn)義字符,因?yàn)楹竺娴淖址疾皇撬緛?lái)的ASCII字符意思了。

所有的轉(zhuǎn)義字符和所對(duì)應(yīng)的意義:

轉(zhuǎn)義字符

意義

ASCII碼值(十進(jìn)制)

\a

響鈴(BEL)

007

\b

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

008

\f

換頁(yè)(FF),將當(dāng)前位置移到下頁(yè)開(kāi)頭

012

\n

換行(LF) ,將當(dāng)前位置移到下一行開(kāi)頭

010

\r

回車(CR) ,將當(dāng)前位置移到本行開(kāi)頭

013

\t

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

009

\v

垂直制表(VT)

011

\\

代表一個(gè)反斜線字符''\'

092

'

代表一個(gè)單引號(hào)(撇號(hào))字符

039

\"

代表一個(gè)雙引號(hào)字符

034

\0

空字符(NULL)

000

\ddd

1到3位八進(jìn)制數(shù)所代表的任意字符

三位八進(jìn)制

\xhh

1到2位十六進(jìn)制所代表的任意字符

二位十六進(jìn)制

3.解決方法

1.修改數(shù)據(jù)庫(kù)配置,讓數(shù)據(jù)庫(kù)支持\作為轉(zhuǎn)義字符

早期Postgresql普通字符串中的\是作為轉(zhuǎn)義字符對(duì)待的,所以\\最終會(huì)認(rèn)為是\。但是這是不符合SQL標(biāo)準(zhǔn)的,所以在PG 9.1及以后,普通字符串中的\不會(huì)被任務(wù)是轉(zhuǎn)義字符,而E'xx\x'中的\才會(huì)被當(dāng)作是轉(zhuǎn)義字符。

為了使以前的代碼可以在新的PG版本中運(yùn)行,便有了standard_conforming_strings這個(gè)選項(xiàng),這個(gè)選項(xiàng)默認(rèn)是on,表示按照SQL標(biāo)準(zhǔn)處理字符串,當(dāng)設(shè)置為off時(shí),按照PG的舊版本處理字符串。運(yùn)行下面命令,開(kāi)啟這個(gè)選項(xiàng)即可:

ALTER ROLE xx IN DATABASE yy SET standard_conforming_strings TO off;

2. 用新版本支持的轉(zhuǎn)義字符。''或者 E'',將含有轉(zhuǎn)義的字符串放在單引號(hào)里面

'\\' 或者 E'\\'

補(bǔ)充:PG特殊字符的轉(zhuǎn)義

實(shí)例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)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 解決postgresql 數(shù)字轉(zhuǎn)換成字符串前面會(huì)多出一個(gè)空格的問(wèn)題
  • postgreSQL 數(shù)字與字符串類型轉(zhuǎn)換操作
  • postgresql 實(shí)現(xiàn)16進(jìn)制字符串轉(zhuǎn)10進(jìn)制數(shù)字

標(biāo)簽:濮陽(yáng) 海西 寶雞 杭州 辛集 榆林 昭通 溫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作》,本文關(guān)鍵詞  Postgresql,數(shù)據(jù)庫(kù),轉(zhuǎn)義,字符,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    陆川县| 南京市| 敦化市| 邵武市| 化州市| 青神县| 云安县| 雅安市| 友谊县| 革吉县| 庆云县| 通州区| 潞西市| 紫金县| 南乐县| 云龙县| 西乌| 青田县| 进贤县| 灵宝市| 太康县| 衡阳县| 泸溪县| 北辰区| 丰台区| 锡林浩特市| 南召县| 醴陵市| 松阳县| 左权县| 准格尔旗| 富蕴县| 崇左市| 玉环县| 邮箱| 垣曲县| 田林县| 顺昌县| 灵宝市| 庆阳市| 南皮县|