解决方案 »

  1.   

    http://blog.csdn.net/bw555/article/details/4200731
      

  2.   


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

  3.   

    有点改动:
    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;
      

  4.   

    有点改动:
    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;谢谢,但是有个问题啊,要替换的数字前面的内容没了,
    您能不能顺便给我讲解讲解
      

  5.   

    有点改动:
    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;谢谢,但是有个问题啊,要替换的数字前面的内容没了,
    您能不能顺便给我讲解讲解
    什么叫做"要替换的数字前面的内容没了"
      

  6.   

    有点改动:
    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#:座子凳子...  ,第一个座字没了
      

  7.   


    select replace(c1,'12#','17#') from t;
      

  8.   


    select regexp_replace(c1,'(^|[^[:digit:]])12([^[:digit:]])','\117\2') from t;
      

  9.   

    有点改动:
    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;
      

  10.   

    有点改动:
    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”是什么意思?
      

  11.   

    [img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/81.gif]谢谢,结果是对的,能稍微解释下不?
      

  12.   

    有点改动:
    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:]]|$)