小弟最近在写一个替换的语句:
select REGEXP_REPLACE('IYT1R001-IYT1R002-IYT1R003','[IYT]+([A-Z][0-9]*)+\d','@@@') reg from dual
reg  @@@-@@@-@@@  这样是可以的。
假如我想将我查找到的IYT1R001 替换为(IYT1R001)该怎么写啊?select REGEXP_REPLACE('IYT1R001-IYT1R002-IYT1R003','[IYT]+([A-Z][0-9]*)+\d','('||'\[IYT]+([A-Z][0-9]*)+\d'||')') reg from dual  ? 怎么写好像都不对的样子哪位大大帮忙解决一下啊?

解决方案 »

  1.   


    SQL> select REPLACE('IYT1R001-IYT1R002-IYT1R003','IYT1R001','(IYT1R001)') reg
      2  from dual
      3  /
     
    REG
    ----------------------------
    (IYT1R001)-IYT1R002-IYT1R003
      

  2.   

    谢谢咯,但是不是我想要的哦
    可能是我没有表述清楚,类似于“IYT1R001”这样的字段有好多的,如:IYT1R001,IYT1R002,IYT1R003
    我现在需要的是找出它们,然后给每个“IYT1R001”这样的字段加上(),如(IYT1R001)。
      

  3.   

    如果你这个编号IYT1R001有规律的话,就比较简单比如规则是 IYT1R + 3位数字:即IYT1R001~~IYT1R999update 表 set 字段 = "(" + 字段 + ")" where 字段 >= IYT1R001 and 字段 <= IYT1R999
      

  4.   

    问题在于这个编号并没有太多规律,现在看起来是“IYT”开头,回头可能变成“TTY”又或者是其它,而且编号可能还更长,有11位、15位、17位的,所以也是没办法才考虑用正则表达式来处理。