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

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

2024-05-21 08:01:35

不知道你的数字是不是固定位置。还是说只会出现在orcl以后,那个点之前的那个文件名中。如果是的话,那就先用INSTR(字符串,'.',1,1)获取到点的位置,然后根据位置开始往前查找数字
一醉方休

2024-05-21 08:29:33

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;
〆霸气£屌屌″

2024-05-21 11:13:19

translate('/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','0123456789/u01/app/oracle/oradata/orcl/ITSCHDSERVERDATA03.ORA','0123456789')
别说你也难过

2024-05-21 03:15:00

呵呵,先找到点(.),然后一位一位往前截取到非数字