Mysql 模糊查詢 轉義字元

2022-04-23 07:51:11 字數 1790 閱讀 4948

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...