#### Oracle 截取字元串(截取固定分隔符中間的字元) ######## oracle 取固定分隔符之間的字元--方法一 substr+ instrSELECT substr('12JPX#4806(JP)',instr('12JPX#4806(JP)','#')+1,(instr('12J ...
#### Oracle 截取字元串(截取固定分隔符中間的字元) ####
#### oracle 取固定分隔符之間的字元
--方法一 substr+ instr
SELECT substr('12JPX#4806(JP)',instr('12JPX#4806(JP)','#')+1,(instr('12JPX#4806(JP)','('))-(instr('12JPX#4806(JP)','#')+1) ) FROM dual
結果 4806
--方法二 正則表達式
SELECT REGEXP_SUBSTR(REGEXP_SUBSTR('12JPX#4806(JP)','[^#]+',1,2,'i'),'[^(]+',1,1,'i') FROM DUAL;
結果 4806
註意!!!! : 如果首個符號為第一個時,
#### 取欄位包含A-Z的正則表達式用法
select * from gaa_file t where regexp_like(t.gaa02,'^[A-Z]');
#### 4GL 截取字元串(截取固定分隔符中間的字元) ####
####利用while迴圈取出一個包含多個'x'的字元串,最後一個'x'後面的字元 ####
搞個while迴圈取出來
WHILE TRUE
IF guige.getIndexOf("x",1) THEN
LET guige = guige.substring(guige.getIndexOf("x",1)+1, guige.getLength())
ELSE
EXIT WHILE
END IF
END WHILE
#### 取得固定分隔符前面的字元串... ####
方法一:
LET len_str = length(str1)
LET index1 = 0
LET str_ret=str1
WHILE index1<len_str
LET index1=index1+1
IF str1[index1,index1]=p_flag THEN
LET str_ret=str1[1,index-1]
EXIT WHILE
END IF
END WHILE
方法二:
FOR i=1 TO length(xxxx) STEP +1
LET temp = xxx[1,i]
IF temp LIKE '*/' THEN
RETURN temp[1,i-1]
END IF
END FOR
#### 4gl截取字元串進行判斷 ####
FOR li_i = pi_start TO pi_end
LET ls_chk_chr = ps_source.getCharAt(li_i)
IF ls_chk_chr NOT MATCHES "[0-9a-zA-Z]" THEN
LET li_result = FALSE
EXIT FOR
END IF
END FOR
####以固定符號取出字元串中的內容(這裡以'&'作為範例)####
DEFINE l_tok base.stringTokenizer #080121
DEFINE l_str LIKE type_file.chr1000
DEFINE l_str1 LIKE type_file.chr1000
LET l_str ="abasf&asdfa&asfa"
IF NOT cl_null(l_str) THEN
LET l_tok = base.StringTokenizer.create(l_str,"&")
WHILE l_tok.hasMoreTokens()
LET l_str1 = l_tok.nextToken()
END WHILE
END IF
####以固定符號取出字元串中的內容(這裡以'&'作為範例)####