1. 程式人生 > >ORACLE:一列的多行資料拼成字串

ORACLE:一列的多行資料拼成字串

上篇文章寫的是在ibatis中,需要返回一個字串,卻返回了多行資料,結果出現了錯誤。

其實,我想做的是:

  查詢表中的一個欄位,返回了多行,就把這麼多行的資料都拼成一個字串。

例:   id  name
       1   aa
       2   bb
       3   cc

  要的結果是"aa,bb,cc"

以前有過這種需求,我用儲存過程拼接,或者在程式中取出資料拼接,就這樣暫時解決了。


可是事後一直在想是不是可以直接查出來,這樣就簡單多了,oracle中應該有這樣的方法的,可是一直沒找到,呵呵,今天終於解決了。

select WMSYS.WM_CONCAT(a.name) from user a

這樣的話,查詢出的結果:"aa.bb.cc"

解決是解決了,不過用中間用點間隔不太好,希望用逗分號

改進一下:

select replace(WMSYS.WM_CONCAT(a.name),',',';') from user a

結果:"aa;bb;cc"

終於,完美解決了一直困擾我的問題。。。挺簡單的一個方法

相關推薦

ORACLE:資料字串

上篇文章寫的是在ibatis中,需要返回一個字串,卻返回了多行資料,結果出現了錯誤。 其實,我想做的是:   查詢表中的一個欄位,返回了多行,就把這麼多行的資料都拼成一個字串。 例:   id  name        1   aa        2   bb       

SQL將資料合併

SQL2005以上 用到兩個方法 stuff 和 for xml path stuff : stuff(param1, startIndex, length, param2) 說明:將param1中自startIndex(SQL中都是從1開始,而非0)起,刪除length

oracle資料庫把某資料資料

select running_time, running_user, algorithm_id, algorithm_list_id, name1, name2, ROWNUM, wm_concat(t

postgresql 9.3 自定義聚合函式實現資料合併

前言 常見的一種需求,如下圖(1): 目前需要按右邊的factor_code進行分組,將左邊的behavior_code這一列通過指定分隔符連線起來,比如通過<br /> 來連線,理想的效果應當是如下圖(2)這樣: 下面就來討論一下實現

MSSQL將資料拼接

select e_uid, base_no = (stuff((select ';' + base_no from e_baseuid where e_uid = a.e_uid for xml path('')),1,1,'')), e_usetype = (stuff((

Oracle 資料合併一行

方案一:wm_concat函式 select username, id, wmsys.wm_concat(subject) as subject, wmsys.wm_concat(score) a

資料合併一行

需求:在大資料平臺maxcompute上統計各個等級對應的人數,欄位大致如下 CREATE TABLE `XXXX` ( `requestid` char(32) DEFAULT NULL, `id` char(32) NOT NULL, `createtime` varchar

oracle 如何將資料進行合併(用LISTAGG!!!)

LISTAGG(列名,' 分割符號') oracle 11g 以上的版本才有的一個將指定列名的多行查詢結果,用 指定的分割符號 合併成一行顯示: 例如: 表原始資料: 需求:將 mb1_Transport_License_list 表中的資料,根據 transpo

hive中同資料組合的方法以及array to string要點()

1. 同列多行資料組合成一個欄位cell的方法, top N 問題的hive方案 如下: hive 列轉行 to json與to array list set等複雜結構,hive topN的提取的視窗統計方法 select ll,

Oracle合併拼接資料

select wmsys.wm_concat(t.column) from tableName t; wmsys.wm_concat預設是用英文逗號‘,’拼接的,如果需要更換拼接符號,可以用replace函式將英文逗號替換成其它字元。 wmsys.wm_co

資料庫轉一行

如題: select max(case when name='1' then [temp] else null end) as temp1 , max(case when name='2' t

sql 同一內容拼接字串

SELECT L4.plan_id ,MAX(SUBSTR(L4.分組內容,2)) display_theme FROM( SELECT L3.plan_id

利用EXCEL將資料轉換為SQL語句【新增、刪除、修改同理】

語句如下: 按照下列標識進行替換,該語句可以快速生成對應資料的SQL插入語句,批量刪除,批量修改同理! =CONCATENATE("INSERT INTO 【表名】(【欄位名A】,【欄位名B】) V

關於SQL Server將內容拼接一行的問題討論

示例 昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列資料 : 類別 名稱 AAA 企業1

條sql插入資料mysql和oracle的不同寫法

轉載出處: 由於要將mysql資料庫轉為oracle,mybatis的對映檔案裡面的批量插入用的mysql的多個values的形式,但是換成oracle庫之後sql報錯。所以.oracle並不支援這種一個insert into 多個values的方法 mysql:INSE

sqlserver 將一個欄位下的語句合併資料

select 名稱 = ( stuff( (select ',' + CAST(欄位名AS VARCHAR) from 表名 where 條件 for xml path('')), 1, 1,

sqlserver中,如何把中的資料在一行顯示

SQL code問題描述: 無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式, 所以,當我們在處理下列要求時,會比較麻煩: 有表tb, 如下: id value ----- ------ 1 aa 1 bb 2

oracle條記錄字串

select listagg(t.weather_type,',') within GROUP(ORDER BY NULL) weather_type from CO_WEATHER_TYPE t where t.weather_id in (

oracle sql資料合併條,資料量大,用逗號隔開

SELECTxmlagg(XMLPARSE (CONTENT TRANSLATE (unique_id USING CHAR_CS) || ',' WELLFORMED)).getclobval()FROMBIM_ELEMENTCODEWHEREpj_id = '0305'

SQL Server將內容拼接一行或一個字串的問題

昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行 比如表中有兩列資料 : ep_classes  ep_name AAA         企業1 AAA         企業2