【发布时间】:2016-05-21 09:25:09
【问题描述】:
我知道有人问过这个问题,但我的看法略有不同。我有一个用例,我唯一可以控制的是查询的 WHERE 子句,并且我有 2 个表。
使用简单的例子:
Table1 包含 1 个名为“FULLNAME”的列,其中包含数百个值
Table2 包含 1 个名为“PATTERN”的列,其中包含一些匹配的文本
所以,我需要做的是从表 1 中选择与表 2 中的值匹配的所有值。
这是一个简单的例子:
表 1(全名)
南极洲
安哥拉
澳大利亚
非洲
印度
印度尼西亚
表 2(模式)
安
在
实际上我需要的是表 1 中的条目,其中包含表 2 中的值(结果将是南极洲、安哥拉、印度、印度尼西亚)
换句话说,我需要的是这样的:
Select * from Table1 where FULLNAME IN LIKE (Select '%' || Pattern || '%' from 表2)
这里的棘手之处在于我只能控制 where 子句,我根本无法控制 Select 子句或添加连接,因为我使用的产品只允许控制 where 子句。我也不能使用存储过程。
这可能吗?
我使用 Oracle 作为后端数据库
谢谢
【问题讨论】:
-
模式是否总是两个字符,您只想在开头(如您的示例中)或任何地方(如“包含”和您使用通配符所建议的那样)匹配?