一、概述
在開發過程中,我們經常會遇到需要將字符串按照某個分隔符進行切割的情況,Oracle提供了多種字符串分割函數,能夠滿足不同需求的開發。
二、單字符分割函數
Oracle提供了兩種單字符分割字符串函數:SUBSTR和INSTR。
SUBSTR(str, start, length)函數可以截取字符串str從start位置開始,長度為length的子串。
SELECT SUBSTR('abc,def,ghi', 1, 3) FROM DUAL;
運行結果為:
ABC
INSTR(str, sub_str, start_pos, nth_appear)函數可以返回串sub_str在長字符串str中從start_pos位置開始第nth_appear次出現的位置,如果未找到,則返回0。
SELECT INSTR('abc,def,ghi', ',', 1, 2) FROM DUAL;
運行結果為:
5
三、多字符分割函數
Oracle提供了三種多字符分割字符串函數:REGEXP_SUBSTR、REGEXP_REPLACE和XMLTABLE。
1、REGEXP_SUBSTR
REGEXP_SUBSTR(str, pattern, pos, occurrence, match_param)函數可以返回符合正則表達式pattern的字串。
SELECT REGEXP_SUBSTR('abc,def,ghi', '[^,]+', 1, 2) FROM DUAL;
運行結果為:
DEF
2、REGEXP_REPLACE
REGEXP_REPLACE(str, pattern, replace_with, pos, occurrence, match_param)函數可以將符合正則表達式pattern的字串替換為replace_with。
SELECT REGEXP_REPLACE('2021-06-25', '-', '/') FROM DUAL;
運行結果為:
2021/06/25
3、XMLTABLE
XMLTABLE(xml_data, xquery_expr)函數可以將XML數據解析為表格。
SELECT *
FROM XMLTABLE('
張三
23
李四
26
'
PASSING XMLTYPE('
張三
23
李四
26
')
COLUMNS name VARCHAR2(20) PATH 'name',
age NUMBER PATH 'age');
運行結果為:
NAME AGE
-------------------- ----------
張三 23
李四 26
四、小結
本文介紹了Oracle中多種字符串分割函數的用法,包括單字符分割函數SUBSTR和INSTR,以及多字符分割函數REGEXP_SUBSTR、REGEXP_REPLACE和XMLTABLE。這些函數的靈活運用可以大大提高開發效率。
原創文章,作者:KXUZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/148275.html