有一列数据附件地址是类似于这样的格式
/upload/2013/07/25/16/800f5ede-e459-4c8e-b2b3-69899f858342.doc
现在就要把最后的800f5ede-e459-4c8e-b2b3-69899f858342.doc 分割出来 然后存储到新的一列,数据很多 小弟惶恐 各位大神求教啊 在线等

解决方案 »

  1.   

    oracle 有个切割字符串的函数 貌似是substr  你百度一下
      

  2.   

    休要慌张select substr('/upload/2013/07/25/16/800f5ede-e459-4c8e-b2b3-69899f858342.doc',
                  instr('/upload/2013/07/25/16/800f5ede-e459-4c8e-b2b3-69899f858342.doc',
                        '/',
                        -1) + 1)
      from dual;
      

  3.   

    厉害!要的就是这个 不过600多数据 都是一列 存在新表里 不太会啊 求教一下 小弟SQL新手多谢大神!!
      

  4.   

    格式一样的话,把我那个sql里具体的字符串改成你实际的列名就可以了
    dual改成具体表名
      

  5.   

    with t as
     (select '/upload/2013/07/25/16/800f5ede-e459-4c8e-b2b3-69899f858342.doc' str
        from dual
      union all
      select '/aa.doc'
        from dual
      union all
      select '/c/cc.txt' from dual)
    select regexp_replace(str, '.*/(.*)', '\1') from t;
      

  6.   


    --column_name: 相应列名
    --table_name: 相应表名
    select substr(column_name,
                  instr(column_name,
                        '/',
                        -1) + 1)
      from table_name;