如何使用通配符(在 Oracle 中)进行搜索,而不用担心单词出现的大小写或顺序。
例如,如果我搜索like '%a%b%'
,它应该返回包含 *a*b*、*A*B*、*b*a* 和 *B*A* 的值 这只是一个示例,搜索可能有 5 个或更多单词,是它可能只用一个表达式而不是使用 AND 来获得结果。
select *
from yourtable
where yourfield like '%a%'
and yourfield like '%b%'
或者您可以调查Oracle Text
select * from table
where upper(column) like '%A%B%';
或者
select * from table
where lower(column) like '%a%b%';
或者
select * from table
where upper(column) like '%A%'
and upper(column) like '%B%';
或者
select * from table
where lower(column) like '%a%'
and lower(column) like '%b%';
但是,如果您想了解*a*b*
或*b*a*
等等。另一种解决方案是CHARS
在第一个中进行排序,VARCHAR
即如果你有一个类似的字符串,aebcd
然后对其进行排序,abcde
然后使用 like 进行模式匹配。根据这个,您可以使用以下查询对 varchar 中的字符进行排序,然后对其进行模式匹配。
SELECT 1 val
FROM (SELECT MIN(permutations) col
FROM (SELECT REPLACE (SYS_CONNECT_BY_PATH (n, ','), ',') permutations
FROM (SELECT LEVEL l, SUBSTR ('cba', LEVEL, 1) n
FROM DUAL --replace dual by your table
CONNECT BY LEVEL <= LENGTH ('cba')) yourtable
CONNECT BY NOCYCLE l != PRIOR l)
WHERE LENGTH (permutations) = LENGTH ('cba')) temp_tab
WHERE upper(col) like '%A%B%';
退货
val
------------------
1