【问题标题】:oracle regular expression sub string and regular expression replaceoracle正则表达式子字符串和正则表达式替换
【发布时间】:2019-04-17 03:07:23
【问题描述】:

我的表中有 Phone_number 列,其中插入了多个带有字符值的数字(例如(123).254,5674)。我需要比较没有字符串的每个值,并且需要删除重复值。 列值='(245)289.4321,(897)201-7210,(897)2017210,8964253712' 我需要删除重复项,只需要不同的值。提前感谢您的帮助

【问题讨论】:

  • 您正在亲身了解数据规范化中第一个范式的必要性!还有为什么不将格式化字符与数据一起存储。如果您有能力,请修复数据库设计以消除一列中的多个值,这是您出现问题的根本原因。

标签: regex oracle oracle11g regexp-replace regexp-substr


【解决方案1】:

这应该可行:

with tmp_tbl as
(select '(245)289.4321,(897)201-7210,(897)2017210,8964253712' phone_numbers  from dual)
select distinct
  regexp_replace((regexp_substr(tmp_tbl.phone_numbers,'[^,]+', 1, level)),'\D','') phone_number
from 
  tmp_tbl
connect by
  regexp_substr(tmp_tbl.phone_numbers,'[^,]+', 1, level) is not null

结果:

PHONE_NUMBER

8964253712

2452894321

8972017210

【讨论】:

  • 感谢您的帮助,如果我们需要用列名替换 value('(245)289.4321,(897)201-7210,(897)2017210,8964253712') ,我会遇到问题.您能否就此提出建议
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 2016-09-03
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多