我知道有人问过这个问题,但我对它的看法略有不同。我有一个用例,其中我唯一可以控制的是查询的 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 作为后端数据库
谢谢
最佳答案
一种可能的方法是在子查询中结合使用 EXISTS
和 LIKE
:
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/