删除 Hive SQL 查询中两个子字符串之间的所有字符

Posted

技术标签:

【中文标题】删除 Hive SQL 查询中两个子字符串之间的所有字符【英文标题】:Remove all characters between two substrings in Hive SQL query 【发布时间】:2021-04-02 08:26:37 【问题描述】:

我有一列看起来像这样的字符串:

字符串:SECTION1/SECTION2/0000123456789/SECTION3/SECTION4 字符串:SECTION1/SECTION2/0000987654321/SECTION3/SECTION4 字符串:SECTION1/SECTION2/00005552121X/SECTION3/SECTION4 字符串:SECTION1/SECTION2/00005552222:ID/SECTION3/SECTION4

我正在尝试使用 REGEXP_REPLACE 从中间替换可变长度、alpha/num/special char 字符串并将其替换为通用的东西,这样它们都看起来像这样:

STRING:SECTION1/SECTION2/id_number_removed/SECTION3/SECTION4

我整个上午都在尝试找到正确的正则表达式来替换“/SECTION2/”和“/SECTION3/”之间的所有内容,但没有成功。

【问题讨论】:

【参考方案1】:

将正则表达式模式'SECTION2/[^/]+/SECTION3' 替换为'SECTION2/id_number_removed/SECTION3'[^/]+ 表示 1 个或多个不是斜杠的字符。

select regexp_replace(
    'STRING:SECTION1/SECTION2/00005552222:ID/SECTION3/SECTION4',
    'SECTION2/[^/]+/SECTION3', 
    'SECTION2/id_number_removed/SECTION3');

给了

STRING:SECTION1/SECTION2/id_number_removed/SECTION3/SECTION4

【讨论】:

完美!谢谢。

以上是关于删除 Hive SQL 查询中两个子字符串之间的所有字符的主要内容,如果未能解决你的问题,请参考以下文章