sql查询的问题

select * from 

table1 t1,

table2 t2

where 

    1=1 

  ${if(len(开始时间)==0,"","and to_char(t1.DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'")} 

  ${if(len(结束时间)==0,"","and to_char(t1.DATE,'yyyy-mm-dd') <='"+ 结束时间 +"'")}

and

  

t1.ID = t2.ID

or

t2.NAME = '${D}'

如何实现 t2.NAME的条件为空时 只按上面的时间来查询结果,如果t2.NAME不为空时 查所有条件的交集

FineReport 江东大都督 发布于 2021-12-2 13:54 (编辑于 2021-12-2 14:40)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
yzm119464Lv3初级互助
发布于2021-12-2 14:02

select * from 

BJIT.CY_REPAIR t1,

BJIT.CY_REPAIR_CONF t2

where 

    1=1 

${if(len(t2.REPAIR_PART_NAME)==0,

"and to_char(t1.REPAIR_FAULT_DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'  

and to_char(t1.REPAIR_FAULT_DATE,'yyyy-mm-dd') <='"+ 结束时间 +"' ",

"and to_char(t1.REPAIR_FAULT_DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'  

and to_char(t1.REPAIR_FAULT_DATE,'yyyy-mm-dd') <='"+ 结束时间 +"'  

and t1.REPAIR_CONF_ID = t2.ID 

or t2.REPAIR_PART_NAME = '"+d+"'")}

  • 我在等风也等你 我在等风也等你 萌新大佬,
    2021-12-02 14:07 
  • 江东大都督 江东大都督(提问者) 按照姑姑写的 我发现查询结果不对 而且我要的是参数${abc}这样的写法 最终筛选条件要在参数面板添加
    2021-12-02 14:18 
最佳回答
0
北纬六十六度Lv4初级互助
发布于2021-12-2 15:25

你用 or 怎么查交集 ,你应该写 and t2.NAME like '%${D}%'

最佳回答
0
我在等风也等你Lv6初级互助
发布于2021-12-2 16:12(编辑于 2021-12-2 16:20)

select t1.*,t2.* from 

table1 t1

left  join table2 t2 on t1.ID = t2.ID

where 

    1=1 

  ${if(len(t2.NAME)==0,"  ${if(len(开始时间)==0,"","and to_char(t1.DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'")} ","and t2.NAME >= '" +d+ "' and to_char(t1.DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'")} 

  ${if(len(t2.NAME)==0,"  ${if(len(结束时间)==0,"","and to_char(t1.DATE,'yyyy-mm-dd') <='"+ 结束时间 +"'")}","and t2.NAME >= '" +d+ "' and to_char(t1.DATE,'yyyy-mm-dd') >='"+ 开始时间 +"'")} 

感觉还是会有点问题,不过可以按这个思路,放进if里

  • 4关注人数
  • 567浏览人数
  • 最后回答于:2021-12-2 16:20
    请选择关闭问题的原因
    确定 取消
    返回顶部