MySQL之like语句中特殊字符含义以及对应转义工具类

>> 饿了么、美团外卖红包领取地址<<

在like语句查询中,有一些特殊字符需要注意,否则会出现查询结果不符的问题:
1、 ':用于包裹搜索条件,需转为\'
2、 %:用于代替任意数目的任意字符,需转换为\%
3、 _:用于代替一个任意字符,需转换为\_
4、 \:转义符号,需转换为\\

对应转义工具类:

/**
 * 转义工具
 */
public class EscapeUtil {

    /**
     * like转义
     *
     * @param str
     * @return
     */
    public static String likeEscape(String str) {
        if (str != null && !"".equals(str)) {
            return str.replaceAll("[('%_\\\\)]", "\\\\$0");
        }
        return str;
    }

    public static void main(String[] args) {
        String str = "abc'%_\\d";
        System.out.println("转义前:" + str);
        System.out.println("转义后:" + EscapeUtil.likeEscape(str));
        System.out.println("无转义:" + EscapeUtil.likeEscape("abcd"));
    }

}

测试结果:

转义前:abc'%_\d
转义后:abc\'\%\_\\d
无转义:abcd

说明:
转义部分代码我直接使用正则进行替换,因为本身\是java和正则的转义符,所以在正则中一个\需要使用4个\代替。

参考资料:
https://www.awaimai.com/1365.html


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

良世医 医用一次性隔离衣 连体式连帽衣医用隔离服坐飞机男女通用(建议160CM-185CM)
¥25.20
年年好1.2米丝绒布全背胶金字对联《贺岁呈祥》2023兔年不带福字
¥19.90
若烟雪茄保湿包加湿包片保湿袋69%湿度双向保湿恒湿四季通用 便携8g
¥14.00
佳帮手擦玻璃神器双面清洗擦窗器家用伸缩杆窗户刮洗清洁工具 玻璃刮水
¥25.90
ESCASE 工兵铲铁锹可折叠车载户外挖土地铲镐锹钓鱼小铲子随车赶海工具
¥47.00
内廷上用灰甲灵冷敷凝胶足部肿胀疼痛灰指甲足痒足癣足臭甲癣
¥49.80
有质 400ml注水冰袋【30只装】加厚母乳保鲜户外食品海鲜冷藏冰包
¥17.90
绿联 苹果数据线MFi认证 快充充电线适用iPhone14/13Pro/12/11/X/8/iPadi手机Lightning充电器USB电源线1米
¥46.90