【问题标题】:Replacing first occurence of character in a string using HiveQL使用 HiveQL 替换字符串中第一次出现的字符
【发布时间】:2017-10-25 12:55:10
【问题描述】:

我正在尝试替换 Hive 表中字符串中第一次出现的 '-'。我正在使用 HiveQL。我在这里和其他网站上搜索了这个主题,但找不到明确的解释如何使用带有regexp_replace() 的元字符来做到这一点。

这是一个字符串,我需要将第一个“-”替换为空格:16-001-02707 结果应该是这样的:16001-02707 这是我使用的方法:

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

但是,这没有任何作用。

【问题讨论】:

    标签: hive hql regexp-replace


    【解决方案1】:
    select regexp_replace ('16-001-02707','^(.*?)-', '$1');
    

    16001-02707


    跟随 cmets 中的 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 |
    +------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+
    

    【讨论】:

    • 非常感谢!有用。我想知道每个元素是什么意思?我试图使用元字符列表来破译它,但无法让它工作。如果我需要替换第二次或第三次出现?
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 2011-08-25
    • 2016-11-02
    • 2022-10-07
    • 2011-06-05
    • 2014-03-21
    相关资源
    最近更新 更多