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

后台接受到前台检索框传过的查询参数,现在想在前台可以加个类似以 "|" 分隔输入查询参数,后台解析分隔符前后,where 列名 like "%前半截%" and 列名 like "%后半截%" 这种效果

13个回答

最安全的方式是,先在后台代码中通过|进行拆分,把前台传过来的一个参数变成2个参数,这样再传入SQL中。否则的话SQL容易出错。

建议通过 字符串.split("|") 方法代码先拆分再传入sql

select substring('wushu|cheng', 1, locate('|', 'wushu|cheng') - 1);
select substring('wushu|cheng', locate('|', 'wushu|cheng') + 1);

用的什么持久化工具做的数据库管理

后台分开写,利用动态数组查询数据

参考代码如下,以下是图书的分条件查询

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("|")拆分为两个变量后再使用。

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐