天天看點

mysql函數substring_index與oralce函數substr

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