【sql条件判断输出语句】

想实现如果用户在 参数值id集合【1,2,3,4,5】中选择了1 或者2 或者同时选择1和2,则数据集返回sql1  否则返回sql2 应该怎么写呀?以下是我写的 会报错:

if (select id from table  where id in(${id})) in(1,2)

sql1

else 

sql2

ran1025 发布于 2021-9-2 15:57
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-9-2 16:03(编辑于 2021-9-2 16:32)

where 1=1 ${if(find("1",id)>0||find("2",id)>0,"sql1","sql2")}

注意控件id返回字符串,如果返回的是数组,就把find改成inarray

---------------------------------------------

id返回数组:

${if(len(GREPARRAY(id,or(item==1,item==2)))==0&&len(id)>0,"sql1","sql2")}

  • ran1025 ran1025(提问者) where 放在什么语句里?我是需要做权限控制,当用户只选择1 或者2 或者同时选择1和2,则返回sql1,否则返回sql2;
    2021-09-02 16:07 
  • 烟尘 烟尘 回复 ran1025(提问者) 数据集sql里,如果你要实现的两个sql字段不同的话,只能分开两个报表
    2021-09-02 16:09 
  • 烟尘 烟尘 回复 ran1025(提问者) where可以根据自己的sql来调整,要或者不要
    2021-09-02 16:10 
  • ran1025 ran1025(提问者) 回复 烟尘 这样 当为1,3 的时候 也会返回sql1 吧?怎么改为当为1 或者2 或者 1和2 的时候返回sql1呢
    2021-09-02 16:19 
  • 烟尘 烟尘 回复 ran1025(提问者) 答案改了
    2021-09-02 16:33 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-9-2 16:04

image.png

最佳回答
0
snrtuemcLv8专家互助
发布于2021-9-2 16:04(编辑于 2021-9-2 16:21)

${if(or(find(1,参数)>0,find(2,参数)>0),sql1,sql2)}

${if(and(or(find(1,参数)>0,find(2,参数)>0),or(find(3,参数)<=0,find(4,参数)<=0,find(5,参数)<=0)),sql1,sql2)}

  • ran1025 ran1025(提问者) 这样 当为1,3 的时候 也会返回sql1 吧?怎么改为当为1 或者2 或者 1和2 的时候返回sql1呢
    2021-09-02 16:17 
  • snrtuemc snrtuemc 回复 ran1025(提问者) 那就排除3,4,5,看修改答案
    2021-09-02 16:20 
  • ran1025 ran1025(提问者) 回复 snrtuemc 谢谢~~虽然我没测出来
    2021-09-02 17:02 
  • 3关注人数
  • 430浏览人数
  • 最后回答于:2021-9-2 16:32
    请选择关闭问题的原因
    确定 取消
    返回顶部