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 --從左邊開始 到第六位