当前位置: 代码迷 >> Oracle开发 >> oracle sql 正则表达式替换字符,该怎么解决
  详细解决方案

oracle sql 正则表达式替换字符,该怎么解决

热度:100   发布时间:2016-04-24 06:39:24.0
oracle sql 正则表达式替换字符
比如:座12#:座子凳子...,我想要将12替换成17,这样的数据大概有几百条,所以想在数据库里用正则表达式做,正则表达式改怎么写?
------解决方案--------------------

select regexp_replace(c1,'(^
------解决方案--------------------
[^[:digit:]])12([^[:digit:]])','\117\2') from t;

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

求高手赐教,不胜感激

有点改动:


with t as
 (select 'sas12#sdf:' c1
    from dual
  union all
  select '12sas13df:' c1
    from dual
  union all
  select 'sas1#2sdf:12' c1
    from dual
  union all
  select 'sas1#asd2312sdf:' c1
    from dual)
select regexp_replace(c1, '(^
------解决方案--------------------
[^[:digit:]])12([^[:digit:]]
------解决方案--------------------
$)', '17') from t;


谢谢,但是有个问题啊,要替换的数字前面的内容没了,
您能不能顺便给我讲解讲解

什么叫做"要替换的数字前面的内容没了"


座12#:座子凳子...  替换完之后应该是: 座17#:座子凳子...,但是现在的结果是:  17#:座子凳子...  ,第一个座字没了


with t as
 (select 'ss12#sdf:' c1
    from dual
  union all
  select '12sas13df:' c1
    from dual
  union all
  select 'sas1#2sdf:12' c1
    from dual
  union all
  select 'sas1#asd2312sdf:' c1
    from dual)
select regexp_replace(c1,'(^
------解决方案--------------------
[^[:digit:]])12([^[:digit:]]
------解决方案--------------------
$)','\117\2') from t;


版主,regexp_replace(c1,'(^
------解决方案--------------------
[^[:digit:]])12([^[:digit:]]
------解决方案--------------------
$)','\117\2')  能给解释一下第三项的 "\1"   "\2”是什么意思?

反向引用表达式(^
------解决方案--------------------
[^[:digit:]])和([^[:digit:]]
------解决方案--------------------
$)
  相关解决方案