使用HiveQL替换字符串中第一个出现的字符
我正在尝试替换配置单元表中字符串中第一个出现的使用HiveQL替换字符串中第一个出现的字符,hive,hql,regexp-replace,Hive,Hql,Regexp Replace,我正在尝试替换配置单元表中字符串中第一个出现的'-'。我正在使用HiveQL。我在这里和其他网站上搜索了这个主题,但找不到关于如何将元字符与regexp\u replace()一起使用的清晰解释 这是一个字符串,我需要将其中的第一个“-”替换为空白:16-001-02707 结果应该是这样的:16001-02707 这是我使用的方法: select regexp_replace ('16-001-02707','[^[:digit:]]', ''); 但是,这没有任何作用 select reg
'-'
。我正在使用HiveQL。我在这里和其他网站上搜索了这个主题,但找不到关于如何将元字符与regexp\u replace()
一起使用的清晰解释
这是一个字符串,我需要将其中的第一个“-”替换为空白:16-001-02707
结果应该是这样的:16001-02707
这是我使用的方法:
select regexp_replace ('16-001-02707','[^[:digit:]]', '');
但是,这没有任何作用
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 |
+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+------------------------------------+