在oracle中如何结合使用('')和like

Posted

技术标签:

【中文标题】在oracle中如何结合使用(\'\')和like【英文标题】:In oracle how to combine use in ('') and like在oracle中如何结合使用('')和like 【发布时间】:2021-12-02 04:24:23 【问题描述】:

有没有办法在 oracle 中将 INLIKE 运算符组合在一起?例如,我想在 ('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来进行模糊匹配

Oracle 分页查询在子查询中使用了 排序和like 会影响效率吗? 怎样优化呢

ORACLE:如何使用 regexp_like 查找两个字符之间带有单引号的字符串?

如何更好的使用Oracle全文索引