菜鸟一枚,请教一个关于Sql查询的问题

菜鸟一枚,请教一个关于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来进行连接查询,会输出想要的查询结果。

感谢大家的回复啊,本来想了个偷懒的招,直接在前台字符串中以%分隔,现在想想不科学的做法