sql - 我们可以使用 SELECT 作为 REGEXP_LIKE 的参数吗?
问题描述
我有两张桌子——Table1 和 Table2。
表 1 - 包含正则表达式模式。
表 2 - 包含文件名。
目的是从 Table2 中获取文件名与给定正则表达式模式匹配的行。
这工作正常:
SELECT COLUMN2 FROM TABLE2 WHERE REGEXP_LIKE (FILE_NAME, 'PATTERN', 'i');
但是,PATTERN 需要从 Table1 中获取
所以,我尝试过:
SELECT COLUMN2 FROM TABLE2 WHERE REGEXP_LIKE (FILE_NAME, SELECT PATTERN FROM TABLE1, 'i');
似乎不支持此构造,或者我在这里遗漏了一些明显的东西。
任何建议/指针都会有很大帮助!
解决方案
您需要将嵌套查询包装在圆括号中:
SELECT COLUMN2
FROM TABLE2
WHERE REGEXP_LIKE ( FILE_NAME, ( SELECT PATTERN FROM TABLE1 ), 'i' );
这仅在嵌套查询返回您可能需要使用的单行时才有效:
SELECT COLUMN2
FROM TABLE2
WHERE REGEXP_LIKE (
FILE_NAME,
( SELECT PATTERN FROM TABLE1 WHERE unique_field = 'some value' ),
'i'
);
如果查询将返回多行,那么您可能需要使用连接:
SELECT t1.PATTERN,
t2.COLUMN2
FROM TABLE1 t1
INNER JOIN TABLE2 t2
ON ( REGEXP_LIKE ( t2.FILE_NAME, t1.PATTERN, 'i' ) );
推荐阅读
- javascript - 有没有一种从邮政编码推断数字范围的好方法?
- amazon-web-services - DynamoDB 上聊天应用的单表设计,检查方向是否正确
- vue.js - VueJS 3 项目:“无法获取”消息,除根以外的所有路径
- javascript - 想要在散景中使用 TapTool 显示 HoverTool 工具提示数据
- c - 我可以在不使用 va_arg 函数的情况下遍历变量参数列表吗?
- css - 第三方@font-face 不起作用 - 未将字体应用于 H1 标签
- swiftui - 激活 contextMenu 时 UIViewRepresentable 视图消失
- php - 在回调函数中调用命名空间类的静态方法
- javascript - localStorage 和保存值的问题
- php - Laravel 集合 - 查找匹配条件的值的键