现需使用特殊字符实现查询条件中某一字段的灵活查询
大致要求如下:
@ 表示1位大写字母
# 表示1位0-9数字
* 表示1位任意字符
% 表示补全字符长度
Java代码:
String length = 8;
String sNo = "*6@52%";
String str = "^";
for(int i = 0 ; i < sNo.length() ; i++){
if(sNo.chat(i) == '@'){
str += "[A-Z]{1}";
}else if(sNo.chat(i) == '#'){
str += "[0-9]{1}";
}else if(sNo.chat(i) == '*'){
str += ".{1}";
}else if(sNo.chat(i) == '%'){
str += ".{" + length - sNo.length() + "}";
}else{
str += sNo.chat(i) + "{1}";
}
}
SQL代码:
select id, name, age, class, s_no
from students
where 1 = 1
and regexp_like(s_no, #{sNo})