当输入的参数不等于某个字段中的值时,显示全部内容

如题,参数为空选全部是 ${if(len(aa) == 0,"","and bb= '" + aa+ "'")}

请问如何实现当输入的参数aa不等于字段bb中的任意值,则输出bb中的所有值

数据库为postgreSQL

FineReport 访客登录 发布于 2021-9-27 16:53 (编辑于 2021-9-28 10:59)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
杨朝健Lv5中级互助
发布于2021-9-28 11:15(编辑于 2021-9-28 11:21)

百度一下 sql EXISTS的用法

或者在数据集里处理:

${if(len(aa)==0,"",

   if(len(sql("数据连接名","select 1 from 表 where bb = '"+aa+"' limit 1",1,1))=0,"","and bb= '" + aa+ "'")

)}

最佳回答
0
JackRenLv6初级互助
发布于2021-9-27 17:24(编辑于 2021-9-27 17:25)

${if(len(aa) == 0,"","and bb =case when (select count(1) from #table where bb='" + aa+ "')>0 then '" + aa+ "' else bb end ")}

好像只有这种方式才能实现你的需求,(select * from #table where bb='" + aa+ "'),这里的表换成你bb字段所在的表,判断aa在这个表中是不是有数据,有数据则查询aa=bb的数据,如果没有数据,那条件就变成了bb=bb了,就是查询bb所有的数据了。

  • 访客登录 访客登录(提问者) 感谢提供思路,我去试试
    2021-09-27 17:44 
  • 访客登录 访客登录(提问者) 你好,我觉得你的这个思路应该是有道理的,但是我实际应用的时候,aa参数输入值是总是出现查询时间过长的问题,只有为空的时候才能正常执行
    2021-09-28 09:58 
  • JackRen JackRen 回复 访客登录(提问者) 能把你得数据集中得sql语句贴出来看一下吗?
    2021-09-28 10:33 
  • JackRen JackRen 回复 访客登录(提问者) 请问你使用得数据库是什么?我再SQL Server中测试,这个语句是正常能查询得。
    2021-09-28 11:00 
  • 访客登录 访客登录(提问者) 回复 JackRen postgreSQL 子查询都是能正常执行的,合并在一起,就会一直查询中
    2021-09-28 11:02 
  • 3关注人数
  • 644浏览人数
  • 最后回答于:2021-9-28 11:21
    请选择关闭问题的原因
    确定 取消
    返回顶部