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%'

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

老铁,你这个如果不愿意写c.fd_name LIKE '%A%' OR c.fd_name LIKE '%B%' OR c.fd_name LIKE '%C%' OR c.fd_name LIKE '%D%'的话,你需要写成正则表达式,不同的sql正则表达式函数可能不同,以mysql为例子

SELECT Plan_InstallName FROM tbb_resourcelocation WHERE Plan_InstallName REGEXP '(江|海)' 匹配只包含江或者海的plan_installname;
那你这句应该是在where上加上c.fd_name REGEXP(A|B|C|D)