删除 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 查询中两个子字符串之间的所有字符的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Hive/SQL 的 where/have 子句中使用 min()(以避免子查询)
oracle sql 转换成 hive sql -子查询转关联查询(十七),子查询中有2个表外字段关联写法,round函数与power函数的运用