Я делаю это в Импале или Улье. В основном, скажем, у меня есть такая строка
f-150:aa|f-150:cc|g-210:dd
Каждый элемент отделен трубой |
. У каждого есть префикс f-150
или любой другой. Я хочу иметь возможность удалить префикс и сохранить только тот элемент, который соответствует конкретному префиксу. Например, если префикс f-150
, я хочу, чтобы конечная строка после regex_replace была
aa|cc
dd
удалено, поскольку g-210
- это другой префикс и не совпадает, поэтому весь элемент удаляется.
Есть идеи, как это сделать, используя строковое выражение в одном SQL?
Спасибо
ОБНОВЛЕНИЕ 1
Я пробовал это в Impala
:
select regexp_extract('f-150:aa|f-150:cc|g-210:dd','(?:(?:|(\\|))f-150|keep|those):|(?:^|\\|)\\w-\\d{3}:\\w{2}',0);
Но получил этот вывод:
f-150:aa
В Hive
я получил NULL
.