找回密码
 立即注册

QQ登录

只需一步,快速开始

Joe.xu 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-5-26 19:08  /   查看:5245  /  回复:0
本帖最后由 Joe.xu 于 2023-9-18 17:15 编辑

最近发现大家可能都有这样的场景,在前台页面使用了组合复选框或者下拉框得到了类似于1,2,3这样的数据,想在服务端命令中查询对应标签等于1或者2或者3的,
使用了这样的写法,但发现什么数据没有查出来
image.png46557005.png

这是因为in的语法要求把需要查的值一个一个列出来,例如 in ("aa","bb")
但是直接这样注入得到的效果是in("aa,bb"),所以就芭比Q了


下面分享给大家一波干货,in函数当场下岗
image.png353454589.png

以一个相对复杂的demo为案例,如下图,勾选了将军和国家荣誉之后,想要把同时包含2和4标签的数据查出来,步骤如下
image.png552856444.png

(1)已组合复选框为例,将前端勾选的多个参数传到服务端命令中
image.png878304443.png

(2)使用分割文本为数组插件,将参数转成数组
image.png626423644.png

(3)将需要查询的sql设置变量保存,多写了where  1=1是为了便于后面拼接条件
image.png577570190.png
(4)循环第二步的数组进行拼接sql,因为这里一个人对应着多个标签,所以使用了instr函数,
如果只对应一个标签的话,使用=就可以


image.png924317932.png

(5)执行sql ,并将数据返回到前端页面展示,
image.png787757873.png

效果如下
备注:上面是的例子是即要包含2,4,如果是包含2或者4的话,把 1=1改成1=0   and改成or即可,主要是把拼接SQL的思路分享给大家,具体场景需要大家灵活搬用

image.png202483214.png


多参数匹配查询.fgcc (204.55 KB, 下载次数: 684)

评分

参与人数 6满意度 +30 收起 理由
+ 5
牧野流云 + 5
wwbb + 5
王宝义 + 5
sz_xd + 5
leilei6120 + 5

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部