oracle关于字符串截取里边数字的问题

例如,有这样一个字符串,/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA需要取里边的03,怎么实现

第1个回答  2013-10-22
不知道你的数字是不是固定位置。还是说只会出现在orcl以后,那个点之前的那个文件名中。如果是的话,那就先用INSTR(字符串,'.',1,1)获取到点的位置,然后根据位置开始往前查找数字
第2个回答  2013-10-22
select translate('/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','0/.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','0') from dual;
这个结果是那个字符串里的所有数字追问

只想要03怎么办

追答

select substr('/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA',-6,2) from dual;

追问

这样也尝试过,如果是三位数了就查询不到

追答

你把可能的字符串都写出来,

追问

这个不太可能吧,因为是自增长的。

追答

那这样吧,你可以试一下:
select translate(replace('/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','/u01/'),'0/.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','0') from dual;

本回答被提问者采纳
第3个回答  2013-11-07
translate('/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','0123456789/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','0123456789')
第4个回答  2013-10-22
呵呵,先找到点(.),然后一位一位往前截取到非数字
相似回答