mybatis 對特殊字元的模糊查詢
mybatis使用模糊搜尋的時候,對萬用字元會進行轉義,類似%_這些特殊符號都不會被作為字串進行搜尋
例如:
<if test="name != null and name != ''" >
AND content.name like CONCAT(#{name},'%')
</if>
按原先的預想是該欄位會進行左匹配,如果入參name是%測試%,則實際上搜尋的是全匹配搜尋了帶有測試的所有值。
原因就是使用 LIKE 關鍵字進行模糊查詢時,%、下劃線 和 [] 單獨出現時,會被認為是萬用字元,所以需要進行轉義,然後通過 ESCAPE 告訴資料庫轉義字元後的字元為實際值。
首先對關鍵字進行轉義
if (keyWord != null) {
keyWord = keyWord.replaceAll("_", "/_");
}
/**
* 把模糊查詢的檢索的關鍵字對特殊字元進行轉換如 “[”、“%”
* @param str
* 需要轉換的字串
* @return 返回模糊查詢的字串
*/
public static String ToLikeStr(String str)
{
if(str != null && str.length()>0)
{
str =str.trim().replace("\\", "\\\\%").replace("%", "\\%").replace("_", "\\_");
}
return str ;
// str =
}
在 mabatis 的 mapper 檔案中,在 like 語句後面加上 ESCAPE,告訴資料庫轉義字元為 “/”
like #{pattern_keyWord} ESCAPE '/'
也可以使用內建函式來進行模糊搜尋 (locate () 等)
1、使用 locate ()
select `name` from `user` where locate('keyword', `condition`)>0
找到返回的結果都大於 0,沒有查詢到返回 0;
2、使用 instr ()
select`name` from `user` where instr(`condition`, ‘keyword’ )>0
唯一不同的是查詢內容的位置不同
3、使用 position ()
select`name` from `user` where position(‘keyword’ IN `condition`)
4、使用 find_in_set ()
find_in_set (str,strlist),strlist 必須要是以逗號分隔的字串
參考:
https://blog.csdn.net/wslyk606/article/details/85321759
https://baijiahao.baidu.com/s?id=1649824285248362226&wfr=spider&for=pc
相關文章
- MyBatis模糊查詢LIKEMyBatis
- mybatis - [07] 模糊查詢MyBatis
- Oracle特殊符號的模糊查詢Oracle符號
- mybatis做like模糊查詢MyBatis
- Mybatis各種模糊查詢MyBatis
- Mybatis中Oracle的拼接模糊查詢MyBatisOracle
- mybatis-模糊查詢like CONCATMyBatis
- Mybatis模糊查詢結果為空MyBatis
- Mybatis中模糊查詢的各種寫法MyBatis
- mybatis xml 檔案中like模糊查詢MyBatisXML
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- mybatis多條件的模糊查詢解決方案MyBatis
- JN專案-查詢條件過濾特殊字元字元
- elasticsearch的模糊查詢Elasticsearch
- mysql 模糊查詢MySql
- oracle 精確查詢和模糊查詢Oracle
- pgsql查詢優化之模糊查詢SQL優化
- sql日期模糊查詢SQL
- Mybatis之map操作使用者和模糊查詢擴充套件MyBatis套件
- mybatis利用example檔案進行異表欄位模糊查詢MyBatis
- LINQ中的模糊查詢
- Mysql高效的模糊查詢(轉)MySql
- Mybatis查詢MyBatis
- 檢查特殊字元的簡單VCL (轉)字元
- Mybatis【15】-- Mybatis一對一多表關聯查詢MyBatis
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元
- sql 模糊查詢問題SQL
- 反向索引與模糊查詢索引
- python 當中的模糊查詢Python
- mybatis入門程式:mybatis根據使用者名稱稱模糊查詢使用者資訊MyBatis
- mybatis查詢列表MyBatis
- mybatis like 查詢的例子MyBatis
- 特殊字元字元
- Bash的特殊字元字元
- html的特殊字元HTML字元
- int 被當作模糊查詢
- IndexPatternService 模糊查詢索引 fuzzyQuery分析Index索引