Select INSTR('002,001',',',1,1) from dual
INSTR函数:在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。
instr(sourceString,destString,start,appearPosition)
instr('源字符串' , '目标字符串'
,'开始位置','第几次出现')
sourceString:代表源字符串;
destString:代表要从源字符串中查找的子串;
start代表查找的开始位置,这个参数可选的,默认为1;
appearPosition:代表想从源字符中查找出第几次出现的
destString:这个参数也是可选的,
默认为1如果start的值为负数,则代表从右往左进行查找,但是位置数据仍然从左向右计算。返回值为:查找到的字符串的位置。
Select INSTR('002,001',',',1,1) from
dual对于这个查询,返回的结果是4,也就是说逗号在第四个位置上。
所以可以利用substr以及case when
来查找出某一字符前面的字段;
比如:有个表 user,要提取tel字段中逗号前面的字段,若没有逗号的提取整个字段。
表1-1
user
select case when INSTR(tel,',',1,1)=0 then
tel
else substr(tel,1,INSTR(tel,',',1,1)-1)end from
tb_user
其中用case when 判断是否含有逗号,为0就是不含逗号,sbustr用来截取字段。
图2-2
结果