#### 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
####以固定符号取出字符串中的内容(这里以’&’作为范例)####