${if(roleId=\'1\',\"sql1\",\"sql2\")},筛选的时候,sql怎么动态查询

${if(roleId='1',"sql1","sql2")},。 

如图一,我roleId=1的时候,执行的sql1,执行结果如图二,然后我想做筛选,就是默认查询全部的数据,筛选公司名称的时候,就只查对应的数据,

但是我看文档,都是这种写法:   

select * from () where 1=1 ${if(len(name)==0,"","and name ='"+name+"'")}... 

 经过测试,我这么写的话,就只有一个筛选参数能传进去,我原来sql1的参数就进不去,求大佬帮忙sql应该怎么写。  就类似java里面那种if test的动态传参。 

image.pngimage.png

九九九九九 发布于 2021-12-21 10:30
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-12-21 10:33

首先 下拉复选框改成返回字符串

image.png

然后

select * from () where 1=1 ${if(len(name)==0,"","and name in('"+name+"')")}... 

最佳回答
0
snrtuemcLv8专家互助
发布于2021-12-21 10:44

你这个用下面写法

${if(roleId='1',"select * from 表 where 1=1 "+if(len(name)==0,"","and name ='"+name+"'"),"sql2")}

  • 九九九九九 九九九九九(提问者) 我这么写了之后,就只有name这一个参数了, 原来sql1和前面的roleId,都不能传进去了
    2021-12-21 14:50 
  • snrtuemc snrtuemc 回复 九九九九九(提问者) 这个不会啊,你估计那边写错了,整个sql贴出来看看
    2021-12-21 14:52 
最佳回答
0
plarmyLv5见习互助
发布于2021-12-21 11:08

两个SQL的语句不同点在哪里呢

最佳回答
0
shirokoLv6资深互助
发布于2021-12-22 02:03

${if(len(roleid)=0,"查询全部的sql",if(roleId='1',"sql1","sql2") )}

  • 4关注人数
  • 465浏览人数
  • 最后回答于:2021-12-22 02:03
    请选择关闭问题的原因
    确定 取消
    返回顶部