三个as出来的字段共用一个参数用or怎么实现?

image.png

SELECT  ID,TYPE,PHE,COMPANY,PROPOS_DATE,PROPOSER,REPORT_DATE,TIME,CONT_MEASURE,ROOT_CAUSE,ZT,PRIORITIES,APPEAR,STEP,ID01,HEBING, case when HEBING is null then TO_CHAR(id01) else  SUBSTR(HEBING,1,INSTR(HEBING,'''')-1) end as 前面,   trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,15,35),chr(39),''))  as 中间,trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,70,35),chr(39),''))  as 最后 from QRQC_TRACK_REPORT FOR UPDATE where 1=1 ${if(len(para1)==0,"","and ('前面' in('"+para1+"') or '中间' in ('"+para1+"') or '最后' in ('"+para1+"'))")} ${if(len(para2) == 0,"","and to_char(TIME,'yyyy-mm-dd') like '%" + para2 + "%'")} ${if(len(para3) == 0,"","and COMPANY like '%" + para3 + "%'")}  order by id01 asc

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

这边单引号去掉试试

image.png

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

select * from ( SELECT  ID,TYPE,PHE,COMPANY,PROPOS_DATE,PROPOSER,REPORT_DATE,TIME,CONT_MEASURE,ROOT_CAUSE,ZT,PRIORITIES,APPEAR,STEP,ID01,HEBING, case when HEBING is null then TO_CHAR(id01) else  SUBSTR(HEBING,1,INSTR(HEBING,'''')-1) end as 前面,   trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,15,35),chr(39),''))  as 中间,trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,70,35),chr(39),''))  as 最后 from QRQC_TRACK_REPORT FOR UPDATE 

)

where 1=1 

${if(len(para1)==0,"","and (前面 in('"+para1+"') or 中间 in ('"+para1+"') or 最后 in ('"+para1+"'))")} 

${if(len(para2) == 0,"","and to_char(TIME,'yyyy-mm-dd') like '%" + para2 + "%'")} ${if(len(para3) == 0,"","and COMPANY like '%" + para3 + "%'")}  

order by id01 asc

最佳回答
0
檬茶茶Lv4初级互助
发布于2022-2-21 11:43

在外面再包一层,把原先的sql当表来子查询应该就能用as出来的了

最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-21 12:11

select 

tmp.* 

from (

SELECT  

ID,

TYPE,

PHE,

COMPANY,

PROPOS_DATE,

PROPOSER,

REPORT_DATE,

TIME,

CONT_MEASURE,

ROOT_CAUSE,ZT,

PRIORITIES,

APPEAR,STEP,

ID01,

HEBING, 

case when HEBING is null then TO_CHAR(id01) else  SUBSTR(HEBING,1,INSTR(HEBING,'''')-1) end as 前面,  

 trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,15,35),chr(39),''))  as 中间,

 trim(replace(substr(replace(HEBING,',',lpad(' ',40,' ')) ,70,35),chr(39),''))  as 最后 

 from QRQC_TRACK_REPORT FOR UPDATE 

 where 1=1 

 ${if(len(para2) == 0,"","and to_char(TIME,'yyyy-mm-dd') like '%" + para2 + "%'")} 

 ${if(len(para3) == 0,"","and COMPANY like '%" + para3 + "%'")} 

  ) tmp

where 1=1

 ${if(len(para1)==0,"","and (tmp.前面 in('"+para1+"') or tmp.中间 in ('"+para1+"') or tmp.最后 in ('"+para1+"'))")} 

  order by tmp.id01 asc

  • 用户DZNws0326467 用户DZNws0326467(提问者) 总是报错
    2022-02-21 14:13 
  • CD20160914 CD20160914 回复 用户DZNws0326467(提问者) 把你录入的参数截图出来。然后再把报错的信息截图出来。。
    2022-02-21 14:16 
最佳回答
0
liu.yangLv2初级互助
发布于2022-2-21 17:10(编辑于 2022-2-21 17:17)

嵌套一层,在外面写 if  这一段 ,并且把 中文字段名两边的'(单引号)去掉

最佳回答
0
RiveryLv5中级互助
发布于2022-2-21 17:33

with  a as(select ...from ...)

select * from a

where ....

  • 6关注人数
  • 493浏览人数
  • 最后回答于:2022-2-21 17:33
    请选择关闭问题的原因
    确定 取消
    返回顶部