从长|中提取字段名称值使用REGEXP_EXTRACT在Cloudera Impala中分隔字符串

时间:2019-03-23 15:28:54

标签: impala cloudera-cdh

我是REGEXP及其语法的新手。

我有一个多对长字符串,格式为field_name:value,由|分隔。 使用Impala Shell,我尝试运行SQL Select来搜索特定的field_name :,然后需要获取值中的任何值,直到下一个|

试图使用本指南,但未提供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并阅读了之前的这篇文章后尝试了上面 REGEXP_EXTRACT in Impala

样本长字符串 FIELD_NAME1:VALUE1 | FIELD_NAME2:VALUE2 | FIELD_NAME3: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

期待看到 VALUE1

实际结果 空

0 个答案:

没有答案