sql模糊查询带中括号[ ]字符串及中括号Unclosed character class near index 0 [ ^ 转义符问题

4 篇文章 0 订阅
3 篇文章 0 订阅

一、需要模糊查询带中括号的字符串,一般写法失败:

        SELECT * FROM EvaluationInformation WHERE AnnualNumber LIKE '%[2018]%';

二、中括号需要通过escape 进行转义才能查到数据:

       SELECT * FROM EvaluationInformation WHERE AnnualNumber LIKE '%/[2018/]%' escape '/';

三、中括号需要提前加上‘/’ 进行转义,用java字符串replace,split转义失败:

1、String annualnumber = evaluationInfo.getAnnualnumber();
             if(annualnumber.contains("[")) {
                annualnumber.replaceAll("[","/[");
              }

2、String annualnumber = evaluationInfo.getAnnualnumber();
             if(annualnumber.contains("[")) {
                  annualnumber.replaceAll("\\[","/[");
              }

3、String[] splits = annualnumber.split("[");

四、java  字符串split转义成功:

String[] splits = annualnumber.split("\\[");
            annualnumber=splits[0];
            for (int i =1; i < splits.length; i++) {
                annualnumber+="/["+splits[i];
            }

     可以使用js转义:annualnumber.replace("[","/[").replace("]","/]");,

     如果有多个中括号,js不能使用replaceAll,放弃使用js转义;中括号 '[' 或者  ']' 可能放在字符串末尾,使用java后端转义:

String annualnumber = evaluationInfo.getAnnualnumber();
		if(StringUtils.isNotEmpty(annualnumber)) {
			annualnumber+="1";
			if(annualnumber.contains("[")) {
				String[] splits = annualnumber.split("\\[");
				annualnumber=splits[0];
				for (int i =1; i < splits.length; i++) {
					annualnumber+="/["+splits[i];
				}
			}
			
			if(annualnumber.contains("]")) {
				String[] splits = annualnumber.split("\\]");
				annualnumber=splits[0];
				for (int i =1; i < splits.length; i++) {
					annualnumber+="/]"+splits[i];
				}
			}
			evaluationInfo.setAnnualnumber(annualnumber.substring(0, annualnumber.length()-1));
		}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值