参数为空选全部,有成功案例。就改一点就不行了

参数为空选全部语句怎么写 我这个。要scx参数为空选lhg的全部。各位大神请解答。第一张图为成案例,但是就改一下就不行了。

image.png

image.png

FineReport pets 发布于 2020-11-26 09:18 (编辑于 2020-11-26 10:37)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
petsLv3见习互助
发布于2020-11-27 09:28

SELECT a.jth ,a.sjsl ,a.riqi,a.banci,b.lhg,b.scx  FROM cntjlsb as a,tb_jtxx as b where a.jth=b.jth and b.lhg='${lhg}'

and 1=1

${if(len(scx) == 0,"","and b.scx = '" + scx + "'")}

ORDER  BY riqi,jth,banci

这是我的语句

并没有怎么变,重新建了一个

最佳回答
1
shirokoLv6资深互助
发布于2020-11-26 09:21

${if(len(scx)=0,""," AND lhg IN ('"+scx+"')")}

  • pets pets(提问者) 不出数据
    2020-11-26 09:35 
  • pets pets(提问者) 你这个会显示列名\'lhg\'不明确,然后我换成b.lhg就不出数据了
    2020-11-26 09:37 
  • shiroko shiroko 回复 pets(提问者) 为什么你自己写的 scx 和lhg都自己对应,提问却要scx对应lhg
    2020-11-26 09:51 
  • pets pets(提问者) 回复 shiroko 我自己写的自动对应呀 scx本来就是lhg分开的
    2020-11-26 10:18 
最佳回答
0
格调Lv6初级互助
发布于2020-11-26 09:47(编辑于 2020-11-26 11:40)

用SQL标准写法

SELECT A.*,B.* FROM cntjlsb A LEFT JOIN tb_jtxx B ON A.jth = B.jth
where 1=1
${if(len(scx)=0,if(len(lhg)=0,""," AND b.lhg IN ('"+lhg+"')")," AND b.scx IN ('"+scx+"')")}

其实不是很懂你的描述,我写的这个是当scx和lng同时为空查询全部,当scx不为空查 scx带条件的这部分,当scx为空,lng不为空查 lng带条件的这部分

  • pets pets(提问者) 不管用
    2020-11-26 10:26 
  • pets pets(提问者) 我这个scx是lhg分出来的 自动就可以跟随 我以前也写过scx为空选lhg的全部
    2020-11-26 10:29 
  • 格调 格调 回复 pets(提问者) 是要scx为空选lhg的全部?那scx不为空呢?
    2020-11-26 11:33 
最佳回答
0
yikefuLv6初级互助
发布于2020-11-26 10:57

写一个sql函数 if判断一下 当scx参数为空选时,查询lhg的全部就欧克了

  • pets pets(提问者) 当scx为空时要选当前lhg的全部请问要怎么写呢
    2020-11-26 11:04 
  • yikefu yikefu 回复 pets(提问者) https://help.fanruan.com/finereport/doc-view-846.html?source=1 看一下这个案例
    2020-11-26 11:06 
最佳回答
0
用户z6EcY5046Lv3见习互助
发布于2020-11-26 11:12

你把参数加上,在数据库里跑一下sql看行吗

  • pets pets(提问者) 不行
    2020-11-26 13:08 
  • monicared monicared 回复 pets(提问者) 那就说明你sql写的有问题,先把sql调通了再说呀
    2020-11-26 13:36 
最佳回答
0
百理Lv4见习互助
发布于2020-11-26 11:17

把1=1放在where后第一个,然后条件再拼接

  • 5关注人数
  • 812浏览人数
  • 最后回答于:2020-11-27 09:28
    请选择关闭问题的原因
    确定 取消
    返回顶部