在oracle中,可以利用Instr()和substr()函數來截取字串中的一部分字符,語法為「SUBSTR('需要截取的字串',截取開始位置, INSTR('需要截取的字串,'','查找開始位置','第幾次出現')-1) 」。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
oracle截取欄位中的部分字串
#使用Oracle中Instr()和substr()函數:
在Oracle中可以使用instr函數對某個字串進行判斷,判斷其是否含有指定的字元。
其語法為:
instr(sourceString,destString,start,appearPosition). instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
其中
#sourceString代表原始字串;
對於instr函數,我們經常這樣使用:從一個字串中找出指定子字串的位置。例如:
SQL> select instr('yuechaotianyuechao','ao') position from dual; POSITION ---------- 6從第7個字元開始搜尋
SQL> select instr('yuechaotianyuechao','ao', 7) position from dual; POSITION ---------- 17從第1個字元開始,搜尋第2次出現子字串的位置
SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual; POSITION ---------- 17對於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 substr函數的用法,取得字串中指定起始位置和長度的字串 ,預設是從起始位置到結束的子字串。
substr( string, start_position, [ length ] ) substr('目标字符串',开始位置,长度)如:
substr('This is a test', 6, 2) would return 'is' substr('This is a test', 6) would return 'is a test' substr('TechOnTheNet', -3, 3) would return 'Net' substr('TechOnTheNet', -6, 3) would return 'The'select substr('Thisisatest', -4, 2) value from dual
SUBSTR()函數
1.用處:是從給定的字元表達式或備註欄位傳回一個子字串。2.語法格式:
substr(string string, int a, int b); substr(string string, int a) ;格式1: 1、string 需要截取的字串 # 2、a 截取字串的起始位置(註:當a等於0或1時,都是從第一個開始截取)
3、b 要截取的字串的長度
格式2: # 1、string 需要被截斷的字串2、a 可以理解為從第a個字開始擷取後面所有的字串。
oracle截取字串將C3411.907w15 截取點號之前的字串C3411 SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15.907w , '.', 1, 1) - 1)
SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1) FROM DUAL
將C3411.907w15 截取點號之後的字串907w15 SUBSTR ('C3411.907w15', INSTR ('C3411.907w ' , 1, 1) 1)SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
FROM DUAL
#原始字串:
##原始字段中存在7個“_”,我現在只想取出最後一個“_”後面的字串,該怎麼解決呢? 分兩步驟:
第一步,透過Instr()函數,找出第7個「_」字元:
select instr('Q房網路集團_經紀事業部_華南區_深圳世華_營業部_南山前海區_前海中心片區_前海五分店','_', 1, 7) fdisplayname from SHENZHENJM1222.B
或:
select instr('Q房網集團_經紀事業部_華南區_深圳世華_營業部_南山前海區_前海中心片區_前海五分店', '_',-1, 1
) fdisplayname FROM SHENZHENJM1222.B兩者效果一樣,下面的-1,表示從右邊開始算起始字符,1表示取得第一個「_」取得的結果如圖:
###第2步,透過substr()函數,取出所需的欄位:######select substr(###fdisplayname###,instr(fdisplayname,'_',-1 ,1)### 1###) fdisplayname from SHENZHENJM1222.B#########fdisplayname###:代表欄位名,相當於元字串#######重點介紹一下### 1######
1表示在目標字串「_」後面的第一個字串開始截取
#下面看不同的數字的情況:
##
select substr(fdisplayname ,instr(fdisplayname,'_',-1,1) 1) fdisplayname from SHENZHENJM1222.B
在來看instr(fdisplayname,'_',-1,1#)中的1是啥意思:
#########推薦教學:《###Oracle教學###》###
以上是oracle怎麼截取字串中的一部分字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!