mysql遇到反斜杠要轉(zhuǎn)義處理:

創(chuàng)新互聯(lián)主營新鄉(xiāng)縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),新鄉(xiāng)縣h5微信小程序定制開發(fā)搭建,新鄉(xiāng)縣網(wǎng)站營銷推廣歡迎新鄉(xiāng)縣等地區(qū)企業(yè)咨詢
MySQL的轉(zhuǎn)義字符“\”
MySQL識(shí)別下列轉(zhuǎn)義字符:
\0
一個(gè)ASCII 0 (NUL)字符。
\n
一個(gè)新行符。
\t
一個(gè)定位符。
\r
一個(gè)回車符。
\b
一個(gè)退格符。
\'
一個(gè)單引號(hào)(“'”)符。
MySQL中的模式匹配(標(biāo)準(zhǔn)SQL匹配和正則表達(dá)式匹配)
1. 使用LIKE和NOT LIKE比較操作符(注意不能使用=或!=);
2. 模式默認(rèn)是忽略大小寫的;
3. 允許使用”_”匹配任何單個(gè)字符,”%”匹配任意數(shù)目字符(包括零字符);
MySQL還提供象UNIX實(shí)用程序的擴(kuò)展正則表達(dá)式模式匹配的格式:
1. 使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,他們是同義詞);
2. REGEXP模式匹配與被匹配字符的任何地方匹配,則匹配成功(即只要被匹配字符包含或者可以等于所定義的模式,就匹配成功);
不同于LIKE模式匹配,只有和整個(gè)值匹配,才匹配成功(即只有被匹配字符完全和所定義的模式匹配,才匹配成功)
3. REGEXP默認(rèn)也是不區(qū)分大小寫,可以使用BINARY關(guān)鍵詞強(qiáng)制區(qū)分大小寫;
如:SELECT * FROM pet WHERE name REGEXP BINARY ‘^B’;
4. 正則表達(dá)式為一個(gè)表達(dá)式,它能夠描述一組字符串。REGEXP操作符完成MySQL的擴(kuò)展正則表達(dá)式匹配。REGEXP實(shí)現(xiàn)的功能是如果被匹配字符中部分或完全符合所定義的表達(dá)式描述的字符,則表示匹配成功。
1)最簡單的正則表達(dá)式是不含任何特殊字符的正則表達(dá)式,如hello。
SELECT * FROM pet WHERE name REGEXP ‘hello’;表示的意思是如果name這列的某一行包含hello這個(gè)單詞,則匹配就成功了。(注意和LIKE的區(qū)別,LIKE要求name這列的某一行必須完全等于hello,才匹配成功)。
2)非平凡的正則表達(dá)式,除了含有最簡單表達(dá)式那些東西,還需要采用特殊的特殊結(jié)構(gòu),用到的字符,往下看。(因此,通常的正則表達(dá)式是普通單詞和這些正則表達(dá)式字符構(gòu)成的表達(dá)式)
5. 擴(kuò)展正則表達(dá)式的一些字符:
1) ‘.’匹配任何單個(gè)字符;
2) […]匹配在方括號(hào)內(nèi)的任何字符,可以使用’-’表示范圍,如[a-z],[0-9],而且可以混合[a-dXYZ]表示匹配a,b,c,d,X,Y,Z中的任何一個(gè);(注意使用括號(hào)以及’|’的方法也可以達(dá)到相同的效果,如(a|b|c)匹配a,b,c中的任何一個(gè));此外可以使用’^’表示否定,如[^a-z]表示不含有a-z中間的任何一個(gè)字符;
3) ‘*’表示匹配0個(gè)或多個(gè)在它前面的字符。如x*表示0個(gè)或多個(gè)x字符,.*表示匹配任何數(shù)量的任何字符;
4) 可以將模式定位必須匹配被匹配字符的開始或結(jié)尾,在匹配模式前加”^”:表示匹配從被匹配字符的最開頭開始,在匹配模式后加”$”:表示匹配要進(jìn)行到被匹配字符的最末尾。
5) ‘+’表示匹配1個(gè)或多個(gè)在它前面的字符。如a+表示1個(gè)或多個(gè)a字符。
6) ‘?’表示匹配0個(gè)或1個(gè)在它前面的字符。如a?表示0個(gè)或1個(gè)a字符。
7) ‘|’如de|abc表示匹配序列de或者abc。注意雖然[…]也可以表示匹配中的某一個(gè),但是每次僅僅能表示單個(gè)字符及[a-bXYZ]實(shí)際每一次只代表了一個(gè)字符。
8) ()括號(hào)可以應(yīng)用在表達(dá)式中,使得更容易理解。
9) a{5}表示匹配共5個(gè)a,a{2,8}表示匹配2~8個(gè)a。
a*可以寫成a{0, } 第二個(gè)參數(shù)省略表示沒有上界;a+可以寫成a{1,};a?可以寫成a{0,1}
更準(zhǔn)確地講,a{n}與a的n個(gè)實(shí)例準(zhǔn)確匹配。a{n,}匹配a的n個(gè)或更多實(shí)例。a{m,n}匹配a的m~n個(gè)實(shí)例,包含m和n
m和n必須位于0~RE_DUP_MAX(默認(rèn)為255)的范圍內(nèi),包含0和RE_DUP_MAX。如果同時(shí)給定了m和n,m必須小于或等于n。
!--[if !supportLineBreakNewLine]--
!--[endif]--
10) 標(biāo)準(zhǔn)類別[:character_class:]:
常用的一些標(biāo)準(zhǔn)類別,一般在[]中使用,由于用在[]中故和[a-z]類似,每一次只能頂替一個(gè)字符。(這個(gè)有點(diǎn)類似perl里面定義的常用的一些標(biāo)準(zhǔn)類別:\w表示一個(gè)單詞字符即[a-zA-Z0-9];\W一個(gè)非單詞字符與\w相反; \d一個(gè)數(shù)字即[0-9];\D一個(gè)非數(shù)字;\s一個(gè)白空間字符即[\t\f\r\n];\f為換頁符;\S一個(gè)非白空間字符)
標(biāo)準(zhǔn)的類別名稱:
alnum
文字?jǐn)?shù)字字符
alpha
文字字符
blank
空白字符
cntrl
控制字符
digit
數(shù)字字符
graph
圖形字符
lower
小寫文字字符
圖形或空格字符
punct
標(biāo)點(diǎn)字符
space
空格、制表符、新行、和回車
upper
大寫文字字符
xdigit
十六進(jìn)制數(shù)字字符
使用實(shí)例:
SELECT 'justalnums' REGEXP '[[:alnum:]]+';解釋其中[[:alnum:]]由于[:alnum:]表示文字?jǐn)?shù)字字符,它又用在[]中,故[[:alnum:]]代表一個(gè)字符它為一個(gè)文字或者數(shù)字。后面的+號(hào)表示1個(gè)或多個(gè)這樣的文字或數(shù)字。
上述語句返回1.那是因?yàn)閖ustalnums中是由字母組成的。
11)字邊界:[[::]]表示開始,[[::]]表示結(jié)束:
其定義了一個(gè)單詞的開始和結(jié)束邊界,這個(gè)單詞為字字符,這樣[[::]]代表這個(gè)字字符前面的部分,[[::]]代表這個(gè)字字符后面的部分。字字符為alnum類的字母數(shù)字字符或下劃線(_);因此[[::]], [[::]]均代表不是字字符的字符,即只要不是字母數(shù)字字符以及下劃線(_)即可。因此其可以為什么都不是。因此[[::]]word[[::]]能夠匹配如下的所有情況:
即word單詞本身,word*** 解釋***代表不是字母數(shù)字以及_的任何字符(如,word-net);***word(如,micorsoft word);***word***(如,this is a word program.)
舉例:[[::]]word[[::]]:
SELECT 'a word a' REGEXP '[[::]]word[[::]]'; 結(jié)果為真SELECT 'a xword a' REGEXP '[[::]]word[[::]]'; 結(jié)果為假 最后注意的注意:要在正則表達(dá)式中使用特殊字符,需要在這些字符前面添加2個(gè)反斜杠’\’,舉例:SELECT '1+2' REGEXP '1+2'; 結(jié)果為0SELECT '1+2' REGEXP '1\+2'; 結(jié)果為0SELECT '1+2' REGEXP '1\\+2'; 結(jié)果為1解釋:這是因?yàn)镸ySQL解析程序解析該SQL語句時(shí):首先將字符串’1\\+2’解析為1\+2;然后把1\+2當(dāng)作正則表達(dá)式,由正則表達(dá)式庫來解析,它代表1+2。因此需要加上2個(gè)反斜杠。 不要經(jīng)常犯加一個(gè)反斜杠的錯(cuò)誤,加一個(gè)反斜杠會(huì)莫名其妙:如SELECT '1t2' REGEXP '1\t2';結(jié)果會(huì)返回1本來的意思是匹配1制表符\t以及2,但是由于只添加了一個(gè)\所以,解析以后編程了1t2,所以匹配成功。12)[.characters.]和[=character_class=] 參考資料:
MySQL的模式匹配
MySQL的正則表達(dá)式匹配
=========================================================================================================
正則表達(dá)式:
正則表達(dá)式是為復(fù)雜搜索指定模式的強(qiáng)大方式。
^
所匹配的字符串以后面的字符串開頭
mysql select "fonfo" REGEXP "^fo$"; - 0(表示不匹配)
mysql select "fofo" REGEXP "^fo"; - 1(表示匹配)
$
所匹配的字符串以前面的字符串結(jié)尾
mysql select "fono" REGEXP "^fono$"; - 1(表示匹配)
mysql select "fono" REGEXP "^fo$"; - 0(表示不匹配)
.
匹配任何字符(包括新行)
mysql select "fofo" REGEXP "^f.*"; - 1(表示匹配)
mysql select "fonfo" REGEXP "^f.*"; - 1(表示匹配)
a*
匹配任意多個(gè)a(包括空串)
mysql select "Ban" REGEXP "^Ba*n"; - 1(表示匹配)
mysql select "Baaan" REGEXP "^Ba*n"; - 1(表示匹配)
mysql select "Bn" REGEXP "^Ba*n"; - 1(表示匹配)
a+
匹配1個(gè)或多個(gè)a字符的任何序列。
mysql select "Ban" REGEXP "^Ba+n"; - 1(表示匹配)
mysql select "Bn" REGEXP "^Ba+n"; - 0(表示不匹配)
a?
匹配一個(gè)或零個(gè)a
mysql select "Bn" REGEXP "^Ba?n"; - 1(表示匹配)
mysql select "Ban" REGEXP "^Ba?n"; - 1(表示匹配)
mysql select "Baan" REGEXP "^Ba?n"; - 0(表示不匹配)
de|abc
匹配de或abc
mysql select "pi" REGEXP "pi|apa"; - 1(表示匹配)
mysql select "axe" REGEXP "pi|apa"; - 0(表示不匹配)
mysql select "apa" REGEXP "pi|apa"; - 1(表示匹配)
mysql select "apa" REGEXP "^(pi|apa)$"; - 1(表示匹配)
mysql select "pi" REGEXP "^(pi|apa)$"; - 1(表示匹配)
mysql select "pix" REGEXP "^(pi|apa)$"; - 0(表示不匹配)
(abc)*
匹配任意多個(gè)abc(包括空串)
mysql select "pi" REGEXP "^(pi)*$"; - 1(表示匹配)
mysql select "pip" REGEXP "^(pi)*$"; - 0(表示不匹配)
mysql select "pipi" REGEXP "^(pi)*$"; - 1(表示匹配)
{1} {2,3}
這是一個(gè)更全面的方法,它可以實(shí)現(xiàn)前面好幾種保留字的功能
a*
可以寫成a{0,}
a
可以寫成a{1,}
a?
可以寫成a{0,1}
在{}內(nèi)只有一個(gè)整型參數(shù)i,表示字符只能出現(xiàn)i次;在{}內(nèi)有一個(gè)整型參數(shù)i,
后面跟一個(gè)“,”,表示字符可以出現(xiàn)i次或i次以上;在{}內(nèi)只有一個(gè)整型參數(shù)i,
后面跟一個(gè)“,”,再跟一個(gè)整型參數(shù)j,表示字符只能出現(xiàn)i次以上,j次以下
(包括i次和j次)。其中的整型參數(shù)必須大于等于0,小于等于 RE_DUP_MAX(默認(rèn)是25
5)。 如果同時(shí)給定了m和n,m必須小于或等于n.
[a-dX], [^a-dX]
匹配任何是(或不是,如果使用^的話)a、b、c、d或X的字符。兩個(gè)其他字符之間的“-”字符構(gòu)成一個(gè)范圍,與從第1個(gè)字符開始到第2個(gè)字符之間的所有字符匹配。例如,[0-9]匹配任何十進(jìn)制數(shù)字 。要想包含文字字符“]”,它必須緊跟在開括號(hào)“[”之后。要想包含文字字符“-”,它必須首先或最后寫入。對(duì)于[]對(duì)內(nèi)未定義任何特殊含義的任何字符,僅與其本身匹配。
mysql select "aXbc" REGEXP "[a-dXYZ]"; - 1(表示匹配)
mysql select "aXbc" REGEXP "^[a-dXYZ]$"; - 0(表示不匹配)
mysql select "aXbc" REGEXP "^[a-dXYZ] $"; - 1(表示匹配)
mysql select "aXbc" REGEXP "^[^a-dXYZ] $"; - 0(表示不匹配)
mysql select "gheis" REGEXP "^[^a-dXYZ] $"; - 1(表示匹配)
mysql select "gheisa" REGEXP "^[^a-dXYZ] $"; - 0(表示不匹配)
[[.characters.]]
表示比較元素的順序。在括號(hào)內(nèi)的字符順序是唯一的。但是括號(hào)中可以包含通配符,
所以他能匹配更多的字符。舉例來說:正則表達(dá)式[[.ch.]]*c匹配chchcc的前五個(gè)字符
。
[=character_class=]
表示相等的類,可以代替類中其他相等的元素,包括它自己。例如,如果o和( )是
一個(gè)相等的類的成員,那么[[=o=]]、[[=( )=]]和[o( )]是完全等價(jià)的。
[:character_class:]
在括號(hào)里面,在[:和:]中間是字符類的名字,可以代表屬于這個(gè)類的所有字符。
字符類的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、uppe
r、cntrl、print和xdigit
mysql select "justalnums" REGEXP "[[:alnum:]] "; - 1(表示匹配)
mysql select "!!" REGEXP "[[:alnum:]] "; - 0(表示不匹配)
[[::]]
[[::]]
分別匹配一個(gè)單詞開頭和結(jié)尾的空的字符串,這個(gè)單詞開頭和結(jié)尾都不是包含在alnum中
的字符也不能是下劃線。
mysql select "a word a" REGEXP "[[::]]word[[::]]"; - 1(表示匹配)
mysql select "a xword a" REGEXP "[[::]]word[[::]]"; - 0(表示不匹配)
mysql select "weeknights" REGEXP "^(wee|week)(knights|nights)$"; - 1(表示
匹配)
要想在正則表達(dá)式中使用特殊字符的文字實(shí)例,應(yīng)在其前面加上2個(gè)反斜杠“\”字符。MySQL解析程序負(fù)責(zé)解釋其中一個(gè),正則表達(dá)式庫負(fù)責(zé)解釋另一個(gè)。例如,要想與包含特殊字符“+”的字符串“1+2”匹配,在下面的正則表達(dá)式中,只有最后一個(gè)是正確的:
mysql SELECT '1+2' REGEXP '1+2'; - 0
mysql SELECT '1+2' REGEXP '1\+2'; - 0
mysql SELECT '1+2' REGEXP '1\\+2'; - 1
全文檢索:
====================================================================================================
在括號(hào)里面,在[:和:]中間是字符類的名字,可以代表屬于這個(gè)類的所有字符。字符類的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、upper、cntrl、print和xdigit
mysql select "justalnums" REGEXP "[[:alnum:]]+"; - 1(表示匹配)
mysql select "!!" REGEXP "[[:alnum:]]+"; - 0(表示不匹配)
[[::]]
[[::]]
分別匹配一個(gè)單詞開頭和結(jié)尾的空的字符串,這個(gè)單詞開頭和結(jié)尾都不是包含在alnum中的字符也不能是下劃線。
mysql select "a word a" REGEXP "[[::]]word[[::]]"; - 1(表示匹配)
mysql select "a xword a" REGEXP "[[::]]word[[::]]"; - 0(表示不匹配)
mysql select "weeknights" REGEXP "^(weeweek)(knightsnights)$"; - 1(表示匹配)
現(xiàn)在復(fù)制粘貼到MySql的Data文件夾下卻在Navicat中顯示不出來了 1.這個(gè)問題應(yīng)該是你的路徑?jīng)]有放置正確,試一下?lián)Q換路徑試一下。 2.這樣導(dǎo)入數(shù)據(jù)是有問題的,我覺得數(shù)據(jù)庫的版本要是一樣的話,你把數(shù)據(jù)庫的源文件換成你一件的就行了,試試吧!應(yīng)該沒有問題的。
分享文章:mysql怎么顯示斜杠 mysql 斜杠
鏈接URL:http://chinadenli.net/article16/dohihdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、服務(wù)器托管、企業(yè)建站、網(wǎng)站收錄、域名注冊(cè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)