Oracle 如何將以逗號分隔的字串轉化成多行

2021-10-03 08:00:27 字數 1257 閱讀 3555

比如,有如下以逗號分隔的字串:

aaa,bbbb,cccc,dd,eeee

要將其轉化為多列:

aaa

bbbb

cccc

ddeeee

解決方法:

select regexp_substr('aaa,bbbb,cccc,dd,eeee', '[^,]+', 1, rownum)

from dual

connect by level <= length(regexp_replace('aaa,bbbb,cccc,dd,eeee', '[^,]+', ''));

主要用到3個技巧:

常用方法:

select length(regexp_replace(replace('1234565', '5', '@'),  '[^@]+',  '')) count from dual;

select lengthb(translate('abcdefgefgdbe','e'||'abcdefgefgdbe','e')) from dual;

select lengthb('abcdefgefgdbe')-lengthb(replace('abcdefgefgdbe','e','')) from dual;

function regexp_substr(string, pattern, position, occurrence, modifier)

__srcstr     :需要進行正則處理的字串

__pattern    :進行匹配的正規表示式

__position   :起始位置,從第幾個字元開始正規表示式匹配(預設為1)

__occurrence :標識第幾個匹配組,預設為1

__modifier   :模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。預設為'c'

比如:

select level from dual connect by level <= 5
會得到:

123

45

參考文件

regexp_substr函式的整理

oracle的connect by level的使用

mysql 逗號分隔的id轉為逗號分隔的名稱

mysql 的一張表a的某1欄位是用逗號分隔的code,每個code對應在b表的有code和名稱的對應表。如果用語句檢索出,用逗號分隔的名稱拼接在一起。select b.engine number,group concat code name astran name fromt fix code a...

oracle如何拆分以逗號分隔的字串為多行

最近遇到乙個問題,需要把乙個帶有,的字串拆分成多行。通過查詢資料,這個操作需要使用以下2個關鍵知識 1.regexp substr函式 這個函式的作用是正則分隔字串,用法為 function regexp substr string,pattern,position,occurrence,modif...

oracle如何拆分以逗號分隔的字串為多列

最近遇到乙個問題,需要把乙個帶有,的字串拆分成多列。通過查詢資料,這個操作需要使用以下2個關鍵知識 1.regexp substr函式 這個函式的作用是正則分隔字串,用法為 function regexp substr string,pattern,position,occurrence,modif...