现在我想编写sql,如果我传递了像Aaron
这样的关键字,那么我搜索结果:
select * from worker where name like %Aaron%
如果我传递了像Aaron Alina Wendy
这样的关键字,那么我会搜索结果:
select * from worker where name like %Aaron% or name like '%Alina%' or name like '%Wendy%'
我知道必须有一种简单的方法,比如拆分功能或其他方式来获取搜索结果,而且我不需要拆分关键字来拼接sql语句,怎么做?我能做这样的工作吗? :
select * from worker where fn_getSearchCondition('Aaron Alina Wendy')
答案 0 :(得分:1)
尝试:
select w.*
from worker w
where regexp_like(w.name,'Aaron|Alina|Wendy');
如果您的搜索条件列表是可变的,您可以使用REPLACE()函数将空格字符转换为管道分隔符以组成正则表达式:
regexp_like(w.name, replace('Aaron Alina Wendy',' ','|') )
答案 1 :(得分:0)
尝试:
SELECT w.*
FROM worker w
JOIN table(
DBMSOUTPUT_LINESARRAY('Aaron', 'Alina', 'Wendy')
) x
ON w.name LIKE '%'||x.column_value||'%'