oracle逗號隔開行轉列 Oracle行轉列函式

2021-10-13 06:31:45 字數 996 閱讀 8648

oracle行轉列函式

1 需求

在實際開發中,行轉列函式可以把列值以逗號分隔起來,並顯示成一行。現要求利用一條sql語句獲得表emp中所有員工姓名,且要求在前台頁面中作為乙個字串出現,在這個字串中員工之間的姓名用逗號分隔開。

2 程式

create or replace function row2col(sqlstring varchar2) return varchar2 as

begin

declare type cu_type is ref cursor;

cur_name cu_type;

tmp_name varchar2(20);

names varchar2(500);

begin

open cur_name for sqlstring;

fetch cur_name into tmp_name;

while cur_name%found loop

names := names || tmp_name || ',';

fetch cur_name into tmp_name;

end loop;

return rtrim(names, ',');

end;

end row2col;

3 呼叫

select row2col('select ename from emp') result from dual;

這裡result即為內查詢得到臨時表的別名,也可以去掉

select row2col('select ename from emp') from dual;

4 執行結果

result

smith,allen,ward,jones,martin,blake,clark,scott,king,turner,adams,james,ford,mil

ler5 注意

引數sqlstring必須是乙個返回單列的sql語句,否則,此函式將丟擲錯誤。

擷取逗號隔開的內容,並依次處理

今天看到儲存過程裡有boss寫的一段處理邏輯,也算是與之前幾篇筆記類似的功能,記錄一下,說不定以後會用到 for r i in 1.100 loop r start instrb r bl order nos,if r start 0 then r bl order no r bl order no...

SQL匯出txt檔案欄位用逗號 ,隔開

最近客戶要匯出部分交易明細,格式如下的txt,通過查詢具體sql如下,可以用dbvisualizer或pl sql匯出。主要是sql拼接方法 匯出形如 04,832005 20141231 234915 23000,1 04,832027 20141231 235427 560 1 的txt檔案,具...

MySQL 模糊查詢某字段用逗號隔開

1.查詢pnum欄位中包含3或者9的記錄 select from test where find in set 3 pnum or find in set 9 pnum select from test where concat pnum,regexp 0 9 3 9 0 9 2.cover欄位為 ...