使用regexp|u extract从cloudera impala中的长分隔字符串中提取字段名值

eufgjt7s  于 2021-06-26  发布在  Impala
关注(0)|答案(0)|浏览(275)

我不熟悉regexp及其语法。
在格式字段中有一长串多对_name:value separated 通过|使用impala shell,我尝试运行一个sql select来搜索一个特定的字段|名称:然后需要在下一个字段之前获取任何值|
尝试使用本指南,但没有给出posix的完整语法https://www.cloudera.com/documentation/enterprise/5-9-x/topics/impala_string_functions.html
我试过了

SELECT 
CASE
    WHEN LONGSTRING IS NOT NULL
    AND REGEXP_LIKE(LONGSTRING, 'FIELD_NAME1:') = true
    THEN REGEXP_EXTRACT(LONGSTRING, 'FIELD_NAME1:([^\|]+\|',1)
END AS LONGSTRING_PARSED
from Table1

我在阅读了一些关于regex101的内容并阅读了之前在impala中发布的regexp\u摘录之后尝试了上面的方法
示例长字符串字段|名称1:value1 |字段|名称2:value2 |字段|名称3:value3
我尝试的示例sql

SELECT 
CASE
  WHEN LONGSTRING IS NOT NULL
  AND REGEXP_LIKE(LONGSTRING, 'FIELD_NAME1:') = true
  THEN REGEXP_EXTRACT(LONGSTRING, 'FIELD_NAME1:([^\|]+\|',1)
END AS LONGSTRING_PARSED
from Table1

希望看到值1
实际结果为空

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题