技术阿道 2019-08-20 13:41 采纳率: 22.2%
浏览 1010
已结题

SQL关于怎么执行拼接的字符串?

select a.doc_subject,
       a.fd_number,
       b.fd_fact_node_name,
       to_char(b.fd_start_date,'yyyy-mm-dd hh24:mi:ss') as fd_start_date,
       to_char(b.fd_finish_date,'yyyy-mm-dd hh24:mi:ss') as fd_finish_date,
       b.fd_target_name
from km_review_main  a,lbpm_history_node  b,km_review_template  c
where a.fd_id = b.fd_process_id 
and a.fd_template_id = c.fd_id
and (to_char(b.fd_start_date,'yyyy-mm-dd') = to_char( '','yyyy-mm-dd') or '' is null) 
and (to_char(b.fd_finish_date,'yyyy-mm-dd') = to_char( '','yyyy-mm-dd') or '' is null) 
and trim(trim(both '''' from ('c.fd_name LIKE ''%' || replace('A,B,C,D',',','%'' OR c.fd_name LIKE ''%')  ||  '%''')))
order by a.doc_subject,fd_start_date asc

这句trim(trim(both '''' from ('c.fd_name LIKE ''%' || replace('A,B,C,D',',','%'' OR c.fd_name LIKE ''%') || '%''')))哪里有问题,为什么整个语句执行报错无效的关系运算符。求大神帮忙!!!ABCD是传入的值,可能不止这几个。而且中间有逗号,之前想过用IN,但IN没有模糊查询所以只能where or来拼接。但我这样去执行,语句执行不了,不知道怎么解决。是Oracle
相当于是要拼接出这样:c.fd_name LIKE '%A%' OR c.fd_name LIKE '%B%' OR c.fd_name LIKE '%C%' OR c.fd_name LIKE '%D%'

  • 写回答

2条回答 默认 最新

  • tkzc_shark 2019-08-20 13:48
    关注

    或用or关键字,而不是||

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!