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
- Mybatis中Oracle的拼接模糊查詢MyBatisOracle
- mybatis-模糊查詢like CONCATMyBatis
- Mybatis模糊查詢結果為空MyBatis
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- mybatis xml 檔案中like模糊查詢MyBatisXML
- 查詢某欄位有特殊字元(PATINDEX函式)字元Index函式
- elasticsearch的模糊查詢Elasticsearch
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元
- mysql 模糊查詢MySql
- oracle 精確查詢和模糊查詢Oracle
- pgsql查詢優化之模糊查詢SQL優化
- python 當中的模糊查詢Python
- Mybatis之map操作使用者和模糊查詢擴充套件MyBatis套件
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- Mybatis查詢MyBatis
- Mybatis【15】-- Mybatis一對一多表關聯查詢MyBatis
- sql 模糊查詢問題SQL
- Bash的特殊字元字元
- mybatis like 查詢的例子MyBatis
- 加密的手機號,如何模糊查詢?加密
- Python中使用MySQL模糊查詢的方法PythonMySql
- [20190524]淺談模糊查詢.txt
- IndexPatternService 模糊查詢索引 fuzzyQuery分析Index索引
- [Uniapp] uni-combox模糊查詢APP
- int 被當作模糊查詢
- PostgreSQL DBA(192) - 整行模糊查詢SQL
- mysql like查詢 - 根據多個條件的模糊匹配查詢MySql
- mybatis入門程式:mybatis根據使用者名稱稱模糊查詢使用者資訊MyBatis
- SQL-基礎語法 - 條件查詢 - 模糊查詢SQL
- 文字中的特殊字元字元
- HTML特殊字元HTML字元
- 二、mybatis查詢分析MyBatis
- Mybatis延遲查詢MyBatis
- MyBatis帶參查詢MyBatis
- Mybatis簡單查詢MyBatis
- UILabel模糊查詢符合的字串並且高亮UI字串