我是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
实际结果 空