regexp_replace配置单元中的正则表达式

时间:2019-02-04 10:00:34

标签: sql hadoop hive regexp-replace

我的桌子上有几行。这行看起来像:

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

我只需要在'B ='之后得到数字。对于那个例子,我应该得到:

10
12
58

我应该为选择查询写些什么以获得此结果? (查询不应与“ MB =”和“ B =”混淆)

1 个答案:

答案 0 :(得分:3)

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”的字符串的分号。