如何编写 Oracle sql like java split 函数?
How to write an Oracle sql like java split function?
现在我想写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%'
我知道肯定有split function之类的简单方法或者其他方式得到搜索结果,而且我不需要拆分关键字来拼接sql语句,怎么做?我是这样工作的:
select * from worker where fn_getSearchCondition('Aaron Alina Wendy')
尝试:
SELECT w.*
FROM worker w
JOIN table(
DBMSOUTPUT_LINESARRAY('Aaron', 'Alina', 'Wendy')
) x
ON w.name LIKE '%'||x.column_value||'%'
尝试:
select w.*
from worker w
where regexp_like(w.name,'Aaron|Alina|Wendy');
如果您的搜索条件列表是可变的,您可以使用 REPLACE() 函数将 space 字符转换为竖线分隔符以组成正则表达式:
regexp_like(w.name, replace('Aaron Alina Wendy',' ','|') )
现在我想写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%'
我知道肯定有split function之类的简单方法或者其他方式得到搜索结果,而且我不需要拆分关键字来拼接sql语句,怎么做?我是这样工作的:
select * from worker where fn_getSearchCondition('Aaron Alina Wendy')
尝试:
SELECT w.*
FROM worker w
JOIN table(
DBMSOUTPUT_LINESARRAY('Aaron', 'Alina', 'Wendy')
) x
ON w.name LIKE '%'||x.column_value||'%'
尝试:
select w.*
from worker w
where regexp_like(w.name,'Aaron|Alina|Wendy');
如果您的搜索条件列表是可变的,您可以使用 REPLACE() 函数将 space 字符转换为竖线分隔符以组成正则表达式:
regexp_like(w.name, replace('Aaron Alina Wendy',' ','|') )