在 oracle 中, 將某乙個欄位的多行資料轉換成使用逗號風格的一行顯示,可以使用函式 wmsys.wm_concat 達成。
這個在上一篇
中也介紹到。
參考這一段 「
case 1: 列轉換行。 以一行顯示所有員工的名字
select wmsys.wm_concat(name) from employee;
結果: user1,user2
」現在有個問題, 反過來如何顯示? 也就是說有乙個欄位的值類似: user1,user2, 現在要把它拆分成兩行顯示。
方法就是使用函式: regexp_substr
這個函式, 看名字乙個正規表示式匹配的函式。 具體的格式如下:
使用例子的話,
對於 user1, user2 , 如果要匹配第二個的話(user2)的話, 可以使用以下 sql:
select regexp_substr('user1,user2','[^,]+',1,2,'i') as str from dual;結果 : user2
如果要匹配所有的話,使用如下方式:
select regexp_substr('user1,user2','[^,]+',1,level,'i') as str from dual connect by level<3;user1
user2
看起來達成效果了。 不過這裡的level, 很多狀況下是乙個變數, 是可以通過運算得出來的。
完善一下:
select regexp_substr('user1,user2','[^,]+',1,level,'i') as str from dual connect by level<=length('user1,user2') - length(regexp_replace('user1,user2', ',', ''))+1;select length('user1,user2') - length(regexp_replace('user1,user2', ',', ''))+1 from dual;
Oracle 行列轉換(行合併與拆分)
在 oracle 中,將某乙個欄位的多行資料轉換成使用逗號風格的一行顯示,可以使用函式 wmsys.wm concat 達成。中也介紹到。參考這一段 case 1 列轉換行。以一行顯示所有員工的名字 select wmsys.wm concat name from employee 結果 user1...
Tensorflow Tensor合併與拆分
tensorflow tensor合併與拆分,合併tensor concat tensor1,tensor2 div,name concat 陣列d和b都是3 2 1的三維陣列,根據指定的維數合併,將對應維上的兩個陣列進行拼接。拆分tensor dynamic partition data,part...
Oracle中的行列轉換 行轉列
create table chengji id number,name varchar2 20 course varchar2 20 score number insert into chengji id,name,course,score values 1,張三 語文 67 insert into...