mysql
语法:
substring_index(str,delim,count)
返回字符串str中在第 count 个出现的分隔符 delim之前的子串,和java中的str.substring函数类似。
如果count是正数时候,substring_index是从左到右的顺序检查分隔符delim所在的位置,返回的是当前delim位置左侧字符串。
如果count是负数时候,substring_index是从右到左的顺序检查分隔符delim所在的位置,返回的是当前delim位置右侧字符串。
特殊点如果count等于0,那么,不管delim是否在str中存在,你得到的将是一个空白字符串。
例:
select substring_index('ABC_CE_FG','_',2) from dual;--ABC_CE
select substring_index('ABC_CE_FG','_',-2) from dual;--CE_FG
select substring_index('ABC_CE_FG','_',0) from dual;--空白字符串
select substring_index('ABC_CE_FG','_',3) from dual;--ABC_CE_FG
select substring_index('ABC_CE_FG','_',6) from dual;--ABC_CE_FG
oracle:
语法:
instr( string1, string2 [, start_position [, nth_appearance ] ] )
string1: 源字符串
string2 :目标字符串.
start_position: 代表从string1 的哪个位置开始查找。默认为1. 字符串索引从1开始。为正,从左到右开始检索,为负,从右到左检索。
nth_appearance :代表要查找第几次出现的string2. 此参数可选,默认为 1.不能为负数
返回要查找的字符串string2在源字符串string1中的符合条件的位置索引。
语法:
substr(string,start_position,length)
string :源字符串,即被截取的字符串.
start_position :字符截取的开始位置.start_position大于0时,从左边算起,小于0时,从右边查起
length :截取字符的个数.默认截取到最后一位.
例:
select instr('ABC_CE_FG', '_',-1,2) from dual --4 负数就从右边数,第二次出现_ 的位置是4(这个位置从左往右数)
select instr('ABC_CE_FG', '_',1,2) from dual --7 正数就从左边数,第二次出现_ 的位置是4(这个位置从左往右数)
mysql中:
select substring_index('ABC_CE_FG', '_', 2); --ABC_CE
oracle可以这样写:
select substr('ABC_CE_FG', 1,instr('ABC_CE_FG', '_',1,2))from dual --从左边开始 到第六位