我不熟悉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
实际结果为空
暂无答案!
目前还没有任何答案,快来回答吧!