【发布时间】:2022-01-12 17:52:06
【问题描述】:
我有一个需要转换为 Impala 的 Oracle 查询。我知道 Impala 有 regexp_extract 根据我提供的正则表达式返回字符串。我担心的是,如果同一个字符串不止一次出现,我该如何捕捉呢?
假设我拥有的虚拟 Oracle 代码:
Select t1.r1, REGEXP_SUBSTR("RMG123/RMG987",'(RMG\d{3})+',1,1) as r2, REGEXP_SUBSTR("RMG123/RMG987",'(RMG\d{3})+',1,2) as r3 From t1;
这里我将r2和r3的值分别作为RMG123和RMG987。
当我将其转换为 Impala 等效项时
Select t1.r1, regexp_extract("RMG123/RMG987",'(RMG\\d{3})+',1) as r2, regexp_extract("RMG123/RMG987",'(RMG\\d{3})+',2) as r3 From t1;
我得到 r2 的值为 RMG123,但没有得到 r3 的任何值,因为 regexp_extract 不允许检查模式的第二次出现。
请注意,数据 RMG123/RMH987 只是一个示例数据。用户不知道这两个字段是用/分隔的。
请在 Impala 中提出一种方法,我可以在其中获得与 Oracle 相同的结果。
【问题讨论】:
标签: sql oracle impala regexp-substr