前言:
mysql 的like查詢有兩個通配符 % 和 _,這兩個在查詢的時候會把不需要的結果查詢出來,怎麼處理?
1.問題描述
模糊查詢語句如下:
select name from table where name like '%字符串%';
一般我們會用查詢的字符串替換後可以進行模糊查詢,如果字符串中有 % 或 _,怎麼辦?
2.分析問題
下劃線 _ 在 mysql 中是匹配任意一個字符的意思(可爲空),百分號 % 是匹配任意長度的字符串(可爲空),直接傳到 mysql 語句中不會被當做要查詢字符串的一部分,會被用於模糊查詢的通配符。
有辦法讓 mysql 認爲這是字符串的一部分而不是通配符嗎,有,加轉義
推薦使用 “\”,eg
select name from table where name like '%\%%';
select name from table where name like '%\_%';
這樣就能把通配符當做普通字符來進行查詢
3.tips
java 中的反斜槓是4個反斜槓 “\\\\”