mysql的轉義字元「\」
\0
乙個ascii 0 (nul)字元。
\n
乙個新行符。
\t
乙個定位符。
\r
乙個回車符。
\b
乙個退格符。
\'
乙個單引號(「'」)符。
\ "
乙個雙引號(「 "」)符。
\\
乙個反斜線(「\」)符。
\%
乙個「%」符。它用於在正文中搜尋「%」的文字例項,否則這裡「%」將解釋為乙個萬用字元。
\_select 'ab\'ab' as a,'ab\"ab' as b, 'ab\tab' as c, 'ab\bab' as d,'ab\\ab' as e,'ab\\\\ab' as f,'ab\nab' as g;
如果你想要把二進位制資料插入到乙個blob列,下列字元必須由轉義序列表示:
nul ascii 0。你應該用'\0'(乙個反斜線和乙個ascii '0')表示它。
\ ascii 92,反斜線。用'\\'表示。
' ascii 39,單引號。用』\』』表示。
" ascii 34,雙引號。用』\」』表示。
當sql語句中使用like查詢,且期望匹配的結果中含有"\"的,應當把"\"替換為"\\\\"。
比如資料庫中text欄位有以下三行:
id text
1 au1224 su5b9e1u9a8c
2 \24\a su5b9e1u9a8c
3 \24\\a su5b9e1u9a8c
當我們使用下面這三種方式查詢時,都會得到id 為1,2,3三行,原因後面會講。
select * from test_table where text like "%\24%";
select * from test_table where text like "%\\24%";
select * from test_table where text like "%\\\24%";
只有像下面這樣使用四個反斜槓"\\\\"查詢時,才會得到期望的包含"\24"的結果(id為2、3的兩行)。
select * from test_table where text like "%24\\\\%";
進一步,如果期望查詢到的結果更準確,比如只得到id為2的第二行,應該像下邊這樣查詢。
select * from test_table where text like "%24\\\\a%";
同理,只得到id為3的第三行,匹配兩個反斜槓"\\",應該使用八個反斜槓"\\\\\\\\":
select * from test_table where text like "%24\\\\\\\\a%";
原因其實很簡單,在mysql中,反斜槓在字串中是轉義字元,在進行語法解析時會進行一次轉義,
所以當我們在insert字元時,insert "\\" 在資料庫中最終只會儲存"\"。
而在mysql的like語法中,like後邊的字串除了會在語法解析時轉義一次外,還會在正則匹配時進行第二次的轉義。
因此如果期望最終匹配到"\",就要反轉義兩次,也即由"\"到"\\"再到"\\\\"。
MySQL模糊查詢中萬用字元的轉義
sql中經常用like進行模糊查詢,而模糊查詢就要用到百分號 下劃線 這些萬用字元,其中 匹配任意多個字元,匹配單個字元。如果我們想要模糊查詢帶有萬用字元的字串,如 60 user name 就需要對萬用字元進行轉義,有兩種方式。如下 1 反斜槓是轉義符,通過反斜槓來轉義 使其不再是萬用字元。這裡第...
mysql模糊查詢 MYSQL模糊查詢
mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...
mysql 轉義 MySql字元轉義
在字串中,某些序列具有特殊含義。這些序列均用反斜線 開始,即所謂的轉義字元。mysql識別下面的轉義序列 0ascii 0 nul 字元。單引號 雙引號 b退格符。n換行符。r回車符。ttab字元。zascii 26 控制 ctrl z 該字元可以編碼為 z 以允許你解決在windows中ascii...