spring-data-jpa 模糊查詢特殊字符轉義

當使用特殊字符 譬如 _ %等模糊查詢時往往查詢的結果不是我們想要的 _會匹配任意的一個字符 %會匹配任意多個字符。想要使用_ %進行模糊查詢 必須對其進行轉義

  例如下面的sql  

select * from orders where name like "%abc_%"

會匹配任意name包含 abc的數據 如果需要匹配 abc_則需要對下劃線_轉義

select * from orders where name like "%abc/_%" ESCAPE '/'

escpae '/'表示 對'/'後面的字符進行轉義

多個特殊字符查詢

select * from order where name like "%acb///_/%%" ESCAPE '/'

會匹配 包含acb/_%的數據。注意 escape 的字符/ 也必須要轉義不然會被當作標識轉義其後的字符

spring-data-jpa的寫法

cb.like(root.get("name"),"%" +name.replaceAll("/","//").replaceAll("_","/_").replaceAll("%","/%")+"%",'/')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章