【问题标题】: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

标签: sql oracle


【解决方案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

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 1970-01-01
      • 2019-08-25
      • 2017-06-06
      • 2020-05-24
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多