我现在有一个表MSG_SEND_RECORD,里面有一个MSG_CONTENT字段,里面的内容都是都是一个固定模板:"尊敬的XXX先生(小姐),欢迎您~~~~~~!"现在我想只想提取这个字段里姓名,其他内容不要,代码怎么写最好,效率最高!

解决方案 »

  1.   

    Oracle里有支持正则表达式的函数,你google一下。不过,如果是从性能考虑的话,最好时候多加一个字段来存姓名。==================================================================================== 
    Inthirties关注Oracle数据库 优化,安全,备份,恢复,迁移 如果你需要帮助或想和我一起学习的请联系 
    联系方式QQ:370140387 
    QQ群:  85837884(注明:数据库) 
    电子邮件:[email protected] 
    网站: http://www.inthirties.com 
      

  2.   

    这样可以你试下,不过比较麻烦:
    select substr(substr('尊敬的XXX先生,欢迎您~~~~~~',1,  instr('尊敬的XXX先生,欢迎您~~~~~~',',',1)-1 ),4, (length(substr('尊敬的XXX先生,欢迎您~~~~~~',1,  instr('尊敬的XXX先生,欢迎您~~~~~~',',',1)-1 )) -5 )  )    from dual
      

  3.   

    有这么复杂吗?既然内容除了名字全部都一样,用substr应该容易啊?SQL> select * from test;AAA
    -------------------------------------------------------------
    尊敬的XXX先生(小姐),欢迎您~~~~~~!
    尊敬的X先生(小姐),欢迎您~~~~~~!
    尊敬的XX先生(小姐),欢迎您~~~~~~!SQL> select substr(aaa,4,instr(aaa,'(')-6) from test;SUBSTR(AAA,4,INSTR(AAA,'(')-6)
    -------------------------------------------------------------
    XXX
    X
    XXSQL>