Mysql like查詢語句中,結果包含反斜杠 \ 字符的,需要替換成四個反斜杠 \\\\


如題,當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后邊的字符串除了會在語法解析時轉義一次外,還會在正則匹配時進行第二次的轉義。因此如果期望最終匹配到"\",就要反轉義兩次,也即由"\"到"\\"再到"\\\\"。

原文鏈接:https://blog.csdn.net/mrqingyu/article/details/81004580


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM