技术阿道 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关键字,而不是||

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序