一、需要模糊查詢帶中括號的字符串,一般寫法失敗:
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));
}