题:求出'SDR#SGSJ#SHGSF%##' 里面第二个# 和第三个#之间的内容
思路:
1.找到第二个#和第三个#所在的位置
2.然后截取这两位置之间
第1步用instr函数
第2步用substr函数
select substr('SDR#SGSJ#SHGSF%##',instr('SDR#SGSJ#SHGSF%##','#',1,2)+1,instr('SDR#SGSJ#SHGSF%##','#',1,3)-instr('SDR#SGSJ#SHGSF%##','#',1,2)-1)
from dual;
select substr('SDR#SGSJ#SHGSF%##',instr('SDR#SGSJ#SHGSF%##','#',1,2)+1,instr('SDR#SGSJ#SHGSF%##','#',1,3)-instr('SDR#SGSJ#SHGSF%##','#',1,2)-1)
from dual;
特别要注意加1减1的细节!!
不然就会多打或者少打一个字符
我们计算的是两个#的位置以及两个#位置的差值,但要截取的是两个#之间的字符串(不包括两个#!),要的也是两个#之间字符串的长度,不包括左右两边的两个#
所以就可能会涉及到加1减1
这是要特别注意的