前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ORACLE列值合併

ORACLE列值合併

作者头像
全栈程序员站长
发布于 2022-07-13 06:33:24
发布于 2022-07-13 06:33:24
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

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

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

準備數據:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT xType,wmsys.wm_concat(to_char(City)) AS xCity
FROM MyTest
GROUP BY xType

使用ListAgg:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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版本号才出現的新的聚集函數。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118419.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle常用函数集锦
1、wmsys.wm_concat函数 将列转为行。例子: --表里的数据如下 SQL> select * from idtable; ID NAME ---------- ------------------------------ 10 ab 10 bc 10 cd 20 hi 20 ij 20 mn --函数的执行效果 SQL>select id,wmsys.wm_concat(name)
陈树义
2018/04/13
8550
Oracle连接字符串函数listagg()和wmsys.wm_concat()用法简介
介绍:其函数在Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。
星哥玩云
2022/08/16
3.8K0
Oracle 与 MySQL 的差异分析(8):其他常用函数
(1)decode(x,a1, b1, a2, b2, ... , an, bn):判断x,如果为a1则返回b1,如果为a2则返回b2,...,如果为an则返回bn。如果bm为传入,则返回空。表达式结果的类型由b1决定。
一头小山猪
2020/04/10
1.5K0
【DB笔试面试459】ORA-00904: "wm_concat":invalid identifier错误如何解决?
ORA-00904: "wm_concat":invalid identifier错误如何解决?
AiDBA宝典
2019/09/29
2.4K0
【DB笔试面试459】ORA-00904: "wm_concat":invalid identifier错误如何解决?
oracle wm_concat 拼接乱码
针对oracle拼接函数的乱码,首先查询一下oracle字符的编码是否支持中文,查询语句: SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = ‘NLS_CHARACTERSET’; 如果是中文的,则选择另一种方式: wmsys.wm_concat(to_char(….))..应该加上to_char() 在拼接的字段加上转换。
用户5640963
2019/07/28
1.9K0
sql注入-联合查询总结
mysql通过information_schema这个表查询相应的数据库名,表名,字段名。
Gamma实验室
2020/12/23
2.3K0
sql注入-联合查询总结
元宵快乐:看SQL大师们用SQL绘制的团圆
题记:在多年以前,论坛活跃的时代,在ITPUB上你能看到各种新奇有趣的知识,及时新鲜的信息,出类拔萃的技巧,有很多让人多年以后还记忆犹新。 这个帖子让我忍不住在这个日子,再次发送出来,让大家一起再次体会SQL的强大和神奇能力。而写好SQL,仍然是我们持续不断的追求。 话团圆,画团圆,元宵佳节倍思亲,可是大家知道吗,万能的SQL可以帮助大家绘制团圆。 在ITPUB论坛里,一群SQL爱好者们会用SQL来描摹一切可能。请看如下这段SQL,为大家绘制了团团圆圆的五连环: with a as (select di
数据和云
2018/03/05
9420
元宵快乐:看SQL大师们用SQL绘制的团圆
记一次达梦数据库DMSQL-SQL注入小记
目前国产化越来越普及,平时遇到的达梦数据库也越来越多,因此决定进行下总结。由于本人能力有限,如果文章中有纰漏欢迎指正,也欢迎大家进行交流。
亿人安全
2024/12/19
3270
记一次达梦数据库DMSQL-SQL注入小记
关于数据挖掘关联规则的Oracle实现
呵呵,前几天拿到了数据挖掘基础教程一书,感觉部分算法是基于统计学的原理的,而统计学是可以通过Oracle来实现。
python与大数据分析
2022/03/11
3890
关于数据挖掘关联规则的Oracle实现
Oracle数据库,简述常用Oracle内置函数
无论是在Oracle还是MySQL等数据库中都有其内置函数,即嵌入到主调函数中的函数。Oracle内置函数能够大幅度提高程序的执行效率,实现各种各样的数据库功能。下面我们来看看常用的Oracle内置函数。
用户1289394
2021/05/06
7800
oracle的listagg函数_oracle的listagg函数
大家好,又见面了,我是你们的朋友全栈君。 Oracle11.2新增了LISTAGG函数,可以用于字符串聚集,测试如下: 1,版本 SQL> select * from v$version; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production PL/SQL Release 11.2.0.1.0 – Production CORE 11.2.0.1.0 Production TNS for Linux: Version 11.2.0.1.0 – Production NLSRTL Version 11.2.0.1.0 – Production 2,测试数据 SQL> SQL> select empno,ename,deptno from scott.emp; EMPNO ENAME DEPTNO —– ———- —— 7369 SMITH 20 7499 ALLEN 30 7521 WARD 30 7566 JONES 20 7654 MARTIN 30 7698 BLAKE 30 7782 CLARK 10 7788 SCOTT 20 7839 KING 10 7844 TURNER 30 7876 ADAMS 20 7900 JAMES 30 7902 FORD 20 7934 MILLER 10 14 rows selected 3,作为聚集函数 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY ename) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD SQL> –更换排序列 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY hiredate) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 SMITH,JONES,FORD,SCOTT,ADAMS 30 ALLEN,WARD,BLAKE,TURNER,MARTIN,JAMES –order by必须存在 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP() AS employees 3 FROM scott.emp 4 GROUP BY deptno; SELECT deptno, LISTAGG(ename, ‘,’) WITHIN GROUP() AS employees FROM scott.emp GROUP BY deptno ORA-30491: ORDER BY 子句缺失 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(order by null) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD ==〉按字母顺序排列 4,LISTAGG作为分析函数使用 SQL> SELECT empno, 2 ename, 3 deptno, 4 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY ename) over(partition by deptno) AS employees 5 FROM sco
全栈程序员站长
2022/10/04
9480
Oracle|字符串特殊处理
某需求表环节处理人字段存储的是用户的工号,由于有多人的情况,所以该表在数据存储时是以英文逗号分开存储的。
Java小技巧
2022/05/23
1.4K0
Oracle|字符串特殊处理
Oracle 聚合函数解决聚集连接字符串问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906139
用户1148526
2019/05/25
2K0
ORA-00932: inconsistent datatypes: expected - got CLOB
      最近数据库从10.2.0.3升级到了10.2.0.5之后,一些对象无法编译通过。查看了这些对象主要表现在之前写法不严格的SQL语法导致了这些package无法成功编译,诸如select查询列中不能使用混淆的列名称等。另外一个比较表现突出的是返回ORA-00932: inconsistent datatypes: expected - got CLOB错误,即不一致的数据类型,获得CLOB数据类型。下面是这个问题的症状及对策。
Leshami
2018/08/13
2.5K0
Oracle到高斯数据库的SQL语法迁移手册(建议收藏)
异构数据库的迁移(譬如从Oracle迁移到openGauss)工作主要包括三个方面,
PawSQL
2024/08/20
5920
Oracle到高斯数据库的SQL语法迁移手册(建议收藏)
Oracle迁移MySQL 8特殊SQL处理 顶
我们创建一个表,并生成两个表分区CUS_PART1,CUS_PART2.关于分区的分类可以参考https://www.cnblogs.com/wnlja/p/3979684.html
算法之名
2020/05/18
1.1K0
Oracle迁移MySQL 8特殊SQL处理
                                                                            顶
LeetCode刷题100道,让你滚瓜烂熟拿下SQL「建议收藏」
对人工智能感兴趣的小伙伴,请多关注以下通俗易懂,风趣幽默的人工智能体系分析 https://www.captainai.net/jeames
全栈程序员站长
2022/11/10
3.3K0
LeetCode刷题100道,让你滚瓜烂熟拿下SQL「建议收藏」
wm_concat()和group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别
原标题:oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别
小小鱼儿小小林
2020/06/24
9K0
Oracle高级查询-imooc
本章介绍多表查询的概念,什么是笛卡尔集,等值连接、不等值连接、外连接、自连接和层次查询等多表连接查询的内容。
chenchenchen
2023/01/30
2.1K0
回归朴素、oracle注入
Oracle和MySQL数据库语法大致相同,结构不太相同,对于“数据库”这个概念而言,Oracle采用了”表空间“的定义。数据文件就是由多个表空间组成的,这些数据文件和相关文件形成一个完整的数据库。当数据库创建时,Oracle 会默认创建五个表空间:SYSTEM、SYSAUX、USERS、UNDOTBS、TEMP。
字节脉搏实验室
2020/11/06
9140
回归朴素、oracle注入
推荐阅读
相关推荐
Oracle常用函数集锦
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档