欢迎投稿

今日深度:

ORACLE列值合併,oracle列

ORACLE列值合併,oracle列


合併列值最通用的方法就是寫一個自定義函數去實現,這裏介紹的是其他方法。

在SQL Server中合併列值可以使用For Xml Path,在Oracle中則可以使用wm_concat 或 ListAgg。

準備數據:

CREATE TABLE MyTest(xType NUMBER,City nvarchar2(200));
/

INSERT INTO MyTest(xType,City)
SELECT 1,N'北京' FROM dual UNION ALL
SELECT 1,N'上海' FROM dual UNION ALL
SELECT 1,N'广州' FROM dual UNION ALL
SELECT 2,N'武汉' FROM dual UNION ALL
SELECT 2,N'杭州' FROM dual UNION ALL
SELECT 2,N'厦门' FROM dual
COMMIT;
/
使用wm_Concat:

SELECT xType,wmsys.wm_concat(to_char(City)) AS xCity
FROM MyTest
GROUP BY xType

使用ListAgg:

SELECT xType,
       ListAgg(to_char(City),',') WITHIN GROUP(ORDER BY xType) AS xCity
FROM MyTest
GROUP BY xType
結果:

XTYPE          XCITY
----------   --------------------------------------
         1        北京,广州,上海
         2         杭州,武汉,厦门

備註:

0、上面在City列前都加了To_Char()函數,是為了防止出現亂碼的情況;

1、wm_concat 在ORACEL的官方文檔中沒有,不能保證各版本的兼容性;

2、ListAgg是11g版本才出現的新的聚集函數。



oracle语句中怎把一列的值合并为一个值,用逗号隔开?

所有版本的oracle都可以使用select wm_concat(name) as name from user;
但如果是oracle11g,使用select listagg(name, ',') within group( order by name) as name from user;
效率更高,官方也更推荐这种写法。
 

oracle 将两列合并

单纯的select a||b肯定是错的,你得有个相同的字段才能进行合并啊

所以你得把两个表做个子查询加上一个行号,然后用两个行号做关联才行
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2374.html NewsArticle ORACLE列值合併,oracle列 合併列最通用的方法就是寫一個自定義函數去實現,這裏介紹的是其他方法。 在SQL Server中合併列可以使用For Xml Path,在Oracle中則可以使用wm_concat 或 ListAgg。 準備...
评论暂时关闭