Oracle 替换一些重复的字符(非数字)
Posted
技术标签:
【中文标题】Oracle 替换一些重复的字符(非数字)【英文标题】:Oracle replace some duplicated characters (non digits ) 【发布时间】:2021-02-21 14:45:28 【问题描述】:任何人都可以帮助我为 regexp_replace 构建正确的语法,以从字符串中删除任何相乘的非数字和非字母?如果数字/字母相乘 - 它不会改变 例如。 来源和预期结果:
'ABBC000001223, ABC00000212,,, '
'ABBC000001223, ABC00000212, '
(删除逗号和第二个和第三个逗号后出现的第二个空格)
【问题讨论】:
【参考方案1】:使用此REGEXP_REPLACE
匹配第一组中的任何非字母数字字符
([^[:alnum:]])
后跟一个或多个相同的字符(第 1 组)
([^[:alnum:]])(\1)+
并将其替换为原始字符(第 1 组)
我添加了一些其他数据来演示结果
with dta as (
select 'ABBC000001223, ABC00000212,,, ' txt from dual union all
select ',.,;,;;;;,,,,,,,,,,,,#''++`´' txt from dual union all
select 'ABBC000001223ABC00000212' txt from dual)
select txt,
regexp_replace(txt,'([^[:alnum:]])(\1)+', '\1') result
from dta
TXT
-------------------------------
RESULT
--------------------------------
ABBC000001223, ABC00000212,,,
ABBC000001223, ABC00000212,
,.,;,;;;;,,,,,,,,,,,,#'++`´
,.,;,;,#'+`´
ABBC000001223ABC00000212
ABBC000001223ABC00000212
【讨论】:
以上是关于Oracle 替换一些重复的字符(非数字)的主要内容,如果未能解决你的问题,请参考以下文章
字符串中的数字以“非数字”或错误形式出现 - Python [重复]