Oracle数据库中移除||分隔符间字符的正则表达式查询求助
Oracle 18c 移除||分隔符间内容的正则查询语句
针对你的需求,这里提供两种适配Oracle 18c的正则表达式解决方案:
方案一:直接替换并处理多余空格(推荐)
这个方案会同时移除||及其间的内容,以及前后的空白,替换为单个空格,避免结果出现连续空格:
SELECT REGEXP_REPLACE( 'Hello this Marc ||www.stackoverflow.com|| welcome to our family', '\s*\|\|.*?\|\|\s*', ' ' ) AS cleaned_string FROM dual;
正则模式说明:
\s*:匹配0个或多个空白字符(空格、制表符等)\|\|:匹配分隔符||(|是正则特殊字符,需用\转义).*?:非贪婪匹配任意字符,确保只匹配两个||之间的内容,不会跨多个分隔符段
方案二:分步处理
先移除||及其间内容,再清理连续空格:
SELECT REGEXP_REPLACE( REGEXP_REPLACE( 'Hello this Marc ||www.stackoverflow.com|| welcome to our family', '\|\|.*?\|\|', '' ), ' {2,}', ' ' ) AS cleaned_string FROM dual;
两种方案都能得到你期望的输出:'Hello this Marc welcome to our family'
内容的提问来源于stack exchange,提问作者BODYBOND
相关产品推荐
相关产品推荐

