Я новичок в REGEXP и его синтаксис.
У меня есть длинная строка из нескольких пар в формате field_name: значение, разделенное |Используя 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 и прочитав этот предыдущий пост REGEXP_EXTRACT в 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
Фактический результат Null