регулярное выражение в кусте regexp_replace - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть несколько строк в моей таблице.Эти строки выглядят так:

Atribute       |
---------------|
B=10;MB=12;A=33|
---------------|
MB=16;B=12;A=23|
---------------|
A=10;MB=23;B=58|

и т. Д.

Мне нужно получать числа только после 'B ='.Для этого примера я должен получить:

10
12
58

Какой запрос select я должен написать для получения этого результата?(Запрос не следует путать с «MB =» и «B =»)

1 Ответ

0 голосов
/ 04 февраля 2019
hive> select regexp_extract('B=10\;AB=12\;B=33', '(\;|^)B=([0-9]*)', 2);
    OK
    10
    Time taken: 0.157 seconds, Fetched: 1 row(s)
    hive> select regexp_extract('MB=16\;B=12\;A=23', '(\;|^)B=([0-9]*)', 2);
    OK
    12
    Time taken: 0.11 seconds, Fetched: 1 row(s)
    hive> select regexp_extract('A=10\;MB=23\;B=58', '(\;|^)B=([0-9]*)', 2);
    OK
    58
    Time taken: 0.134 seconds, Fetched: 1 row(s)
    hive>

Первая группа попытается сопоставить начало строки со значением 'B' или точку с запятой, за которой следует строка со значением 'B'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...