多项查询直的语句解释

WHERE 1=1 ${if(len(工单编号) == 0,"","and MONO= '" + 工单编号 + "'")}
${if(len(品号) == 0,"","and B.PRODUCTNO= '" + 品号 + "'")}
${if(len(流水号) == 0,"","and LOTNO= '" + 流水号+ "'")}
${if(len(生产批状态) == 0,"","and STATUS= '" + 生产批状态 + "'")}
${if(len(工序名称) == 0,"","and C.OPNAME= '" + 工序名称 + "'")}
${if(len(工序编号) == 0,"","and C.OPNO='" + 工序编号 + "'")}


疑问:品号前后的'+'是什么意思?

FineReport 徐鑫 发布于 2020-7-8 09:24
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
axingLv6专家互助
发布于2020-7-8 09:26

下拉框参数为空选择全部-https://help.finereport.com/doc-view-2394.html

image.png

最佳回答
0
snrtuemcLv8专家互助
发布于2020-7-8 09:26(编辑于 2020-7-8 09:27)

这个+

号就是拼接sql语句的,把你的参数拼接进去

新建数据集ds1,输入数据库查询语句:

SELECT * FROM 订单 

WHERE 1=1  

${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}

在定义数据集参数时给它设置条件来实现参数为空选全部的效果,此时数据集参数为「area」。

where 1=1 表示条件永真,防止没有参数条件时,where 后面没有有效内容导致出错。

len(area)==0 表示参数「area」为空。

"and 货主地区='"+area+"'" 中间的「area」表示取参数值,'+' 为字符串拼接符号。

${if(len(area) == 0,"","and 货主地区 = '" +area + "'")} 表示:

参数「area」为空时,查询语句相当于:SELECT * FROM 订单

当参数「area」不为空时,查询语句相当于:SELECT * FROM 订单 WHERE 1=1 and 货主地区='${area}'


  • 徐鑫 徐鑫(提问者) 非常感谢,不过这个答案采纳只能采纳一个,尴尬。。
    2020-07-08 10:16 
  • 3关注人数
  • 367浏览人数
  • 最后回答于:2020-7-8 09:27
    请选择关闭问题的原因
    确定 取消
    返回顶部