菜鸟一枚,请教一个关于Sql查询的问题
后台接受到前台检索框传过的查询参数,现在想在前台可以加个类似以 "|" 分隔输入查询参数,后台解析分隔符前后,where 列名 like "%前半截%" and 列名 like "%后半截%" 这种效果
最安全的方式是,先在后台代码中通过|进行拆分,把前台传过来的一个参数变成2个参数,这样再传入SQL中。否则的话SQL容易出错。
select substring('wushu|cheng', 1, locate('|', 'wushu|cheng') - 1);
select substring('wushu|cheng', locate('|', 'wushu|cheng') + 1);
建议通过 字符串.split("|") 方法代码先拆分再传入sql
用的什么持久化工具做的数据库管理
后台分开写,利用动态数组查询数据
参考代码如下,以下是图书的分条件查询
if(bookname!=null&&bookname.length()>0){
sql+=" and bookname like ?";
sqlParams.add("%"+bookname+"%");
}
if(publisherID!=null&&publisherID.length()>0){
sql+=" and publisherid=?";
sqlParams.add(publisherID);
}
比如"zhangsan|18",先用代码(js或后台代码)将字符串分割成“zhangsan”、“18”,然后作为参数拼接进SQL中。
select substring('wushu|cheng', 1, locate('|', 'wushu|cheng') - 1);
select substring('wushu|cheng', locate('|', 'wushu|cheng') + 1);
使用split("|")方法分割字符串,然后再拼接查询
select * xxxxx where 列名 like % substring_index('a|b','|', 1) % and 列名 like "% substring_index('a|b','|', -1) %"
后台收到参数后,用split("|")拆分为两个变量后再使用。
前台拆分,前半截作为一个参数,后半截作为一个参数
在where条件中使用or来进行连接查询,会输出想要的查询结果。
感谢大家的回复啊,本来想了个偷懒的招,直接在前台字符串中以%分隔,现在想想不科学的做法