regexp\u replace hive中的sql正则表达式

vmpqdwk3  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(460)

我的table上有几行字。这条线看起来像:

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=”混淆)

b0zn9rqh

b0zn9rqh1#

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”的字符串匹配。

相关问题