如何在蜂巢中实现regexp_substr?

问题描述

所以我有一个oracle查询

SELECT REGEXP_SUBSTR('BOND~CRR~CD~DAKAR_2299913320','[^~]+',1,3) FROM DUAL

查询的结果应类似于:CD

现在,我的问题是如何在hive中实现该查询,因为据我所知,hive没有REGEXP_SUBSTR语法,到目前为止,我已经尝试过的是:

select regexp_extract('BOND~CRR~CD~DAKAR_2299913320',0)

但结果是:BOND

当我将查询更改为:

select regexp_extract('BOND~CRR~CD~DAKAR_2299913320',2)

它被赋予了一个语义执行:错误的参数“ 2”

那么有什么方法可以在蜂巢中实现该oracle查询吗?

解决方法

您可以使用SPLIT Function代替REGEXP

select split('BOND~CRR~CD~DAKAR_2299913320','[\~]')[2]

有关更多详细信息,请参见下面的链接

https://dwgeek.com/hive-string-functions-examples.html/