在oracle中如何结合使用('')和like
Posted
技术标签:
【中文标题】在oracle中如何结合使用(\'\')和like【英文标题】:In oracle how to combine use in ('') and like在oracle中如何结合使用('')和like 【发布时间】:2021-12-02 04:24:23 【问题描述】:有没有办法在 oracle 中将 IN
和 LIKE
运算符组合在一起?例如,我想在 ('12'
,'123'
) 中搜索一堆字符串,但我不完全知道 ''
里面的内容,所以我想在这个语句中使用 in 和 like 操作。
【问题讨论】:
你可以用col like 'something' or col like 'something2' or ...
代替in
【参考方案1】:
这是临时表的一个很好的用途。
CREATE TEMPORARY TABLE patterns (
pattern VARCHAR(20)
);
INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');
SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);
在示例模式中,col 无法匹配多个模式,因此您可以确定在结果中最多只能看到 tbl 的每一行。但是,如果您的模式使得 col 可以匹配多个,您应该使用 DISTINCT 查询修饰符。
SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);
【讨论】:
【参考方案2】:您可以使用REGEXP_LIKE()
函数来组合这些运算符,例如
SELECT *
FROM t
WHERE REGEXP_LIKE(col,'12')
Demo
【讨论】:
以上是关于在oracle中如何结合使用('')和like的主要内容,如果未能解决你的问题,请参考以下文章
如何将 chai-things 和 chai-like 结合起来?
在Oracle中使用REGEXP_LIKE和使用LIKE的性能哪个好
Oracle 分页查询在子查询中使用了 排序和like 会影响效率吗? 怎样优化呢