把一行裡 , 隔開的資料一行轉換成多行

2021-08-04 12:39:51 字數 1231 閱讀 7700

乙個需求:

需要把一行裡 『,』 隔開的資料一行轉換成多行:

轉換成:

sql 如下:

select id,

nvl(substr(mm,instr(mm,',',1,lev)+1,instr(mm,',',1,lev+1)-instr(mm,',',1,lev)-1),' ') mm

from (

select id, lev, ',' || mm || ',' mm

from (

select 1 id, '張三李四' mm from dual

union all

select 2 id, '張三,李四' mm from dual

union all

select 3 id, '張,三李四' mm from dual

union all

select 4 id, '張三李,四' mm from dual

union all

select 5 id, '張三李四,' mm from dual

) a,(select level lev

from dual

connect by level <=

(select max(length(mm) - length(replace(mm, ','))) + 1

from (

select 1 id, '張三李四' mm from dual

union all

select 2 id, '張三,李四' mm from dual

union all

select 3 id, '張,三李四' mm from dual

union all

select 4 id, '張三李,四' mm from dual

union all

select 5 id, '張三李四,' mm from dual

))) b)

where substr(mm,instr(mm,',',1,lev)+1,instr(mm,',',1,lev+1)-instr(mm,',',1,lev)-1) is not null

order by id ;

SQL將一列轉換成一行,並將這一行形成新的列

sql部分 查詢出來要轉換的資料 select name from dbo.base pay type where is enabled 1 資料如圖 2.將查詢到的資料轉換成行,以逗號隔開,以 包裹 select stuff select name from select name from db...

Shell Linux 一行 多命令

要實現在一行執行多條linux命令,分三種情況 1 舉例 lpr tmp t2 rm tmp t2 第2條命令只有在第1條命令成功執行之後才執行。根據命令產生的退出碼判斷是否執行成功 0成功,非0失敗 2 舉例 cp tmp t2 tmp t2.bak rm tmp t2 只有 前的命令 cp tm...

sed把前一行內容合併到下一行

例如 現在網上的 都通過專門的格式化,帶有行號,如下 02 注 proxy temp path和proxy cache path指定的路徑必須在同一分割槽 03proxy temp path data0 proxy temp dir 04 設定web快取區名稱為cache one,記憶體快取空間大小...