从开始截取到某一个字符之前
select substr(\'12345678.SZ\',1,instr(\'12345678.SZ\',\'.\',1)-1) from dual
从某个字符截取到最后
select substr(\'12345678.SZ\',instr(\'12345678.SZ\',\'.\',1)+1) from dual
说明:
如果要截取的值不包含字符串本身,则将长度减1或者加1即可。如果对substr函数不清楚可以查看oracle中截取后几位用法及详解
instr函数详细说明:
用法:
第一种:Instr(name,name2)
第二种:instr(name,name2,index,number)
Name 是字段名称 name2 是要截取的关键字或者字符串,默认从字段的第一位开始查找,遇到第一个字符串,返回该字符串的位置(也就是索引),如果截取的字符串有包含多个字符,则返回第一个字符的位置。
例1:
select instr(\'helloword\',\'l\') from dual ==>3
select instr(\'helloword\',\'lo\') from dual ==>4
像例1这种情况就是默认从第一个字符开始,查找字符串遇到第一个返回改字符串的位置
例2:
select instr(\'helloword\',\'l\',1,2) from dual ==>4
select instr(\'hellowordow\',\'ow\',1,2) from dual ==>10
select instr(\'hellowordowhelloword\',\'ow\',11,1) from dual ==>16
像例2这种情况就是就是从第三个参数获取到从第几位开始查询,从第四个参数获取到第几次出现的值,将对应值的位置返回。