當使用特殊字符 譬如 _ %等模糊查詢時往往查詢的結果不是我們想要的 _會匹配任意的一個字符 %會匹配任意多個字符。想要使用_ %進行模糊查詢 必須對其進行轉義
例如下面的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("%","/%")+"%",'/')