数据集中用if判断判断某控件是否有值来执行哪条SQL

image.png

image.png执行的是上图中的大段SQL

该如何实现?

FineReport 用户SYTHf4167578 发布于 2022-11-1 15:45
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-11-1 15:45(编辑于 2022-11-1 16:01)

一样啊,直接把sql放到里面就可以啊

你里面还有${}这个,需要删除,然后参数需要拼接

=======================

${if(len(XXX)=0,"select * from 表 where 1=1 "

+if(len(ZGSCode) == 0,""," AND SUBSIDIARY_CODE = '" + ZGSCode + "'")

+if(len(FGSCode) == 0,""," AND BRANCH_CODE = '" + FGSCode + "'")

+if(len(CPDL) == 0,""," AND PRODUCT_CATEGORY in( '" + CPDL + "')"),

"1=2"

)}

image.png

image.png

  • 用户SYTHf4167578 用户SYTHf4167578(提问者) SQL放里面会报错
    2022-11-01 15:46 
  • snrtuemc snrtuemc 回复 用户SYTHf4167578(提问者) 你里面还有${},需要删除,然后需要拼接才可以
    2022-11-01 15:47 
  • 用户SYTHf4167578 用户SYTHf4167578(提问者) 回复 snrtuemc ${if(len(ZGSCode) == 0,\"\",\" AND SUBSIDIARY_CODE = \'\" + ZGSCode + \"\'\")} ${if(len(FGSCode) == 0,\"\",\" AND BRANCH_CODE = \'\" + FGSCode + \"\' \")} ${if(len(CPDL) == 0,\"\",\" AND PRODUCT_CATEGORY in( \'\" + CPDL + \"\')\")} 这种该怎么拼接啊? 我这个必须要判断的
    2022-11-01 15:51 
  • 用户SYTHf4167578 用户SYTHf4167578(提问者) 回复 snrtuemc 您好 这种怎么处理?
    2022-11-01 15:59 
  • snrtuemc snrtuemc 回复 用户SYTHf4167578(提问者) 看修改答案,那个格式
    2022-11-01 16:00 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-11-1 15:48

其实有个更简单的方法

SQL1、SQL2 WHERE 后面加 判断  再用UNION ALL连接

比如

SQL1 ${if(len(ZGSCode)==0,""," and 1<>1")}

union all

SQL2 ${if(len(ZGSCode)==0," and 1<>1","")}

最佳回答
0
RiveryLv5中级互助
发布于2022-11-1 15:48(编辑于 2022-11-1 16:02)

${if(a=='1',

"select * from a where 1=1 "+if(len(b)==0,"","and 2=2")+"",

"select * from b")}

image.png

最佳回答
0
kvOfMrKXLv1见习互助
发布于2022-11-1 16:17

建议用存储过程!

  • 3关注人数
  • 651浏览人数
  • 最后回答于:2022-11-1 16:17
    请选择关闭问题的原因
    确定 取消
    返回顶部