【发布时间】:2021-12-02 04:24:23
【问题描述】:
有没有办法在 oracle 中将 IN 和 LIKE 运算符组合在一起?例如,我想在 ('12','123') 中搜索一堆字符串,但我不完全知道 '' 里面的内容,所以我想在这个语句中使用 in 和 like 操作。
【问题讨论】:
-
你可以用
col like 'something' or col like 'something2' or ...代替in
有没有办法在 oracle 中将 IN 和 LIKE 运算符组合在一起?例如,我想在 ('12','123') 中搜索一堆字符串,但我不完全知道 '' 里面的内容,所以我想在这个语句中使用 in 和 like 操作。
【问题讨论】:
col like 'something' or col like 'something2' or ...代替in
这是临时表的一个很好的用途。
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);
【讨论】:
【讨论】: