Function f_varcharsplit(p_instring Varchar2, p_occurrence Number)
Return Varchar2 Is
defaultchars Varchar2(20) := '*#&!*';
instring Varchar2(2000);
returnstring Varchar2(2000);
Begin
If p_occurrence <= 0 Then
Return Null;
End If;
If substr(p_instring, 0, length(defaultchars)) = defaultchars Then
instring := substr(p_instring, length(defaultchars));
Else
instring := p_instring;
End If;
Select regexp_substr(instring,
'[^' || defaultchars || ']+',
1,
p_occurrence)
Into returnstring
From dual;
Return returnstring;
End f_varcharsplit;
Function f_varcharsplit2(p_instring Varchar2,
p_splitchars Varchar2,
p_occurrence Number) Return Varchar2 Is
instring Varchar2(2000);
returnstring Varchar2(2000);
Begin
If p_splitchars Is Null Then
Return Null;
End If;
If p_occurrence <= 0 Then
Return Null;
End If;
If substr(p_instring, 0, length(p_splitchars)) = p_splitchars Then
instring := substr(p_instring, length(p_splitchars));
Else
instring := p_instring;
End If;
Select regexp_substr(instring,
'[^' || p_splitchars || ']+',
1,
p_occurrence)
Into returnstring
From dual;
Return returnstring;
End f_varcharsplit2;
- 获取使用默认子串分割字符串,获取指定序号的匹配项后的所有字符串
Function f_varcharsplitlaststring(p_instring Varchar2,
p_occurrence Number) Return Varchar2 Is
defaultchars Varchar2(20) := '*#&!*';
instring Varchar2(2000);
returnstring Varchar2(2000);
Begin
If p_occurrence <= 0 Then
Return Null;
End If;
If substr(p_instring, 0, length(defaultchars)) = defaultchars Then
instring := substr(p_instring, length(defaultchars));
Else
instring := p_instring;
End If;
Select substr(instring,
regexp_instr(instring,
'[^' || defaultchars || ']+',
1,
p_occurrence,
1,
'c') + length(defaultchars))
Into returnstring
From dual;
Return returnstring;
End f_varcharsplitlaststring;
- 获取使用指定子串分割字符串,获取指定序号的匹配项后的所有字符串
Function f_varcharsplit2laststring(p_instring Varchar2,
p_splitchars Varchar2,
p_occurrence Number) Return Varchar2 Is
instring Varchar2(2000);
returnstring Varchar2(2000);
Begin
If p_splitchars Is Null Then
Return Null;
End If;
If p_occurrence <= 0 Then
Return Null;
End If;
If substr(p_instring, 0, length(p_splitchars)) = p_splitchars Then
instring := substr(p_instring, length(p_splitchars));
Else
instring := p_instring;
End If;
Select substr(instring,
regexp_instr(instring,
'[^' || p_splitchars || ']+',
1,
p_occurrence,
1,
'c') + length(p_splitchars))
Into returnstring
From dual;
Return returnstring;
End f_varcharsplit2laststring;