sql 隨筆1 substr和instr
select riskcode,outriskcode,riskname,suppliercode,(select min(inputdate) from fccont where innercontno in(select innercontno from fcpol where riskcode=t.riskcode and biztype=‘01‘ and corporation in(‘1137000003‘,‘1137000004‘))) from mrisk t where riskname in(‘安聯安康福瑞兩全保險B款‘,‘安聯超級隨心兩全保險分紅型‘)and substr(suppliercode,0,4) in(‘1060‘,‘1052‘,‘1050‘,‘1031‘,‘1037‘,‘1030‘,‘1015‘,‘1069‘,‘1096‘,‘1049‘) order by instr(‘安聯安康福瑞兩全保險B款,安聯超級隨心兩全保險分紅型‘,riskname)
substr(suppliercode,0,4) in(‘1060‘,‘1052‘,‘1050‘,‘1031‘,‘1037‘,‘1030‘,‘1015‘,‘1069‘,‘1096‘,‘1049‘)
substr
SUBSTR()函數
1.用處:是從給定的字符表達式或備註字段中返回一個子字符串。
2.語法格式:SUBSTR(cExpression,nStartPosition [,nCharactersReturned])
其中,cExpression指定要從其中返回字符串的字符表達式或備註字段;
nStartPosition用於指定返回的字符串在字符表達式或備註字段中的位置,
nCharactersReturned用於指定返回的字符數目,缺省時返回字符表達式的值結束前的全部字符。
舉例:STORE‘abcdefghijlkm‘ To mystring
SUBSTR(mystring ,1,5) 顯示 "abcde" 1 從第一個字符開始 截取的字符中,包括第一個字符
SUBSTR(mystring ,6) 顯示 "fghijklm"
SUBSTR(mystring,-2)顯示“km” 最右邊一個字符是-1,最右邊左邊的字符是-2,然後默認是從左向有取剩下的全部的字符
SUBSTR(mystrng,-4)顯示“jlkm”
where riskname in(‘安聯安康福瑞兩全保險B款‘,‘安聯超級隨心兩全保險分紅型‘) order by instr(‘安聯安康福瑞兩全保險B款,安聯超級隨心兩全保險分紅型‘,riskname)
可以使用instr函數對某個字符串進行判斷,判斷其是否含有指定的字符。
在一個字符串中查找指定的字符,返回被查找到的指定的字符的位置。
語法:
instr(sourceString,destString,start,appearPosition)
instr(‘源字符串‘ , ‘目標字符串‘ ,‘開始位置‘,‘第幾次出現‘)
其中sourceString代表源字符串;
destString代表要從源字符串中查找的子串;
start代表查找的開始位置,這個參數可選的,默認為1;
appearPosition代表想從源字符中查找出第幾次出現的destString,這個參數也是可選的, 默認為1
如果start的值為負數,則代表從右往左進行查找,但是位置數據仍然從左向右計算。
返回值為:查找到的字符串的位置。
對於instr函數,我們經常這樣使用:從一個字符串中查找指定子串的位置。例如:
SQL> select instr(‘abcdefgh‘,‘de‘) position from dual;
POSITION
----------
4
從1開始算 d排第四所以返回4
SQL>select instr(‘abcdefghbc‘,‘bc‘,3) position from dual;
POSITION
----------
9
從第3個字符開始算起 第3個字符是c,所以從3開始以後的字符串找查找bc,返回9
---------------------------
從第1個字符開始,查找第2次出現子串的位置
SQL> select instr(‘qinyinglianqin‘,‘qin‘, 1, 2) position from dual;
POSITION
----------
12
sql 隨筆1 substr和instr