使用hiveql替换字符串中第一个出现的字符

zengzsys  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(736)

我试图替换第一次出现的 '-' 在配置单元表中的字符串中。我正在使用hiveql。我在这里和其他网站上搜索了这个主题,但是找不到关于如何使用元字符的清晰解释 regexp_replace() 去做那件事。
这是一个字符串,我需要将其中的第一个“-”替换为空格: 16-001-02707 结果应该是这样的: 16001-02707 这是我使用的方法:

select regexp_replace ('16-001-02707','[^[:digit:]]', '');

但是,这没有任何作用。

liwlm1x9

liwlm1x91#

select regexp_replace ('16-001-02707','^(.*?)-', '$1');

16001-02707
在评论中的op问题之后

with t as (select '111-22-333333-4-555-6-7-8888-999999' as col)

select  regexp_replace (col,'^(.*?)-','$1')
       ,regexp_replace (col,'^(.*?-.*?)-','$1')
       ,regexp_replace (col,'^((.*?-){2}.*?)-','$1')
       ,regexp_replace (col,'^((.*?-){3}.*?)-','$1')
       ,regexp_replace (col,'^((.*?-){4}.*?)-','$1')
       ,regexp_replace (col,'^((.*?-){5}.*?)-','$1')

from    t
+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+
|                _c0                 |                _c1                 |                _c2                 |                _c3                 |                _c4                 |                _c5                 |
+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+
| 11122-333333-4-555-6-7-8888-999999 | 111-22333333-4-555-6-7-8888-999999 | 111-22-3333334-555-6-7-8888-999999 | 111-22-333333-4555-6-7-8888-999999 | 111-22-333333-4-5556-7-8888-999999 | 111-22-333333-4-555-67-8888-999999 |
+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+

相关问题