sql - 仅使用 WHERE 子句组合 LIKE 和 IN

标签 sql oracle where-in

我知道有人问过这个问题,但我对它的看法略有不同。我有一个用例,其中我唯一可以控制的是查询的 WHERE 子句,并且我有 2 个表。

使用简单的例子:

表 1 包含 1 个名为“FULLNAME”的列,其中包含数百个值
表 2 包含 1 个名为“PATTERN”的列以及一些匹配的文本

因此,我需要做的是从表 1 中选择与表 2 中的值匹配的所有值。

这是一个简单的例子:

表 1(全名)
南极洲
安哥拉
澳大利亚
非洲
印度
印度尼西亚

表 2(模式)


实际上,我需要的是表 1 中的条目,其中包含表 2 中的值(结果将是南极洲、安哥拉、印度、印度尼西亚)

换句话说,我需要的是:

Select * from Table1 where FULLNAME IN LIKE (Select '%' || Pattern || '%' from Table2)

这里棘手的是我只能控制 where 子句,我根本无法控制 Select 子句或添加联接,因为我使用的产品只允许控制 where 子句。我也不会使用存储过程。

这可能吗?

我正在使用 Oracle 作为后端数据库

谢谢

最佳答案

一种可能的方法是在子查询中结合使用 EXISTSLIKE:

select * from table1 t1 
where exists (select null 
              from table2 t2 
              where t1.fullname like '%' || t2.pattern || '%');

关于sql - 仅使用 WHERE 子句组合 LIKE 和 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325157/

相关文章:

sql - 来自 pg_views 查询的不完整信息

php - PDO 库是否比原生 MySQL 函数更快?

sql - 如何将两个表合并在一起,选择具有较高值的​​列,而无法使用 MERGE 语句?

c++ - oracle occi getString 给出 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

Mysql:查询 "WHERE...IN"、 "ORDER BY..."和 "LIMIT"中可能出现错误

sql - 在 Grails 中,您可以在同一方法中同时使用 sql.newInstance 和 Domain 类调用吗?

oracle - 需要一个oracle函数将字符串转换为字节数组

mysql - 自增列 : differences in SQL syntax between Oracle and MySQL

MySQL,给定一个列表,从表中选择缺失的行

php - 尝试通过带有 IN 子句的 php 从 mysql 表中获取数据(收藏夹)