今天在工作中遇到一个需求,需要把SQL语句的查询结果的列转成一行,请教同事后得知可以使用wm_concat()这个函数,现记录在此。

wm_concat()用于将列转为行,列数据之间用逗号隔开,注意其得到的结果类型为CLOB,可以通过to_char()函数转换成varchar2。由于在公司外网没办法连数据库,所以下面的例子纯手打,并非是数据库显示的结果。

假设有oracle中有如下表t_example_employee,内容如下

select * from t_example_employee;
---------------------------------------------------
id     name     age
1       lili           27
2      lucy         26
3       tom        27
4       jim         26
----------------------------------------------------

需要得到年龄为27的员工所有员工,并做为一行返回,可以使用

select to_char(wm_concat(name)) names from t_example_employee where age=27;
---------------------------------------------------
NAMES
lili,tom
---------------------------------------------------

而如果我们不想使用默认的“,”分隔,可以通过replace()函数来实现,比如需要将上面的名字用“;”分隔

select replace(to_char(wm_concat(name)),',',';') names from t_example_employee where age=27;
---------------------------------------------------
NAMES
lili;tom
---------------------------------------------------

看到这里,我想到了以前有人问过的一个需求:一个表有50个字段,而我只需要查询49个字段,如果来得到select的内容,难到要一个一个去写字段?其实我们就可以使用wm_concat()来实现,如下所示

select 'select ' || wm_concat(column_names) || ' from t_example_employee' sqlexpr from user_col_comments;
--------------------------------------------------------------------------------------
SQLEXPR
select ID,NAME,AGE from t_example_employee
--------------------------------------------------------------------------------------

有了上面的结果,你想删哪个字段就删哪个,是不是方便很多啊。

知识点备忘-oracle的wm_concat()函数相关推荐

  1. Oracle中wm_concat函数报错解决方法

    Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...

  2. oracle vm concat指定分隔符,重写Oracle的wm_concat函数,自定义分隔符、排序

    oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...

  3. T-SQL备忘(2):聚合函数运算和NULL

    T-SQL备忘(2):聚合函数运算和NULL 我们看表的数据: 而select AVG(Age) from Member1的结果为27.自己算一下就知道136/6 =22.666.而不是27,因此知道 ...

  4. Oracle的wm_concat()函数与Mysql的group_concat()函数

    这两个函数的作用是相同的,它们的功能是:实现行转列功能,即将查询出的某一列值使用逗号进行隔开拼接,成为一条数据. 1.Oracle的wm_concat()函数 2.Mysql的group_concat ...

  5. 重写Oracle的wm_concat函数,自定义分隔符、排序

    oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...

  6. Oracle数据库wm_concat()函数的使用方法

    oracle数据库中wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle数据库wm_concat(column)函数实现字段合并 如: shopping: --- ...

  7. oracle的wm_concat函数实现行转列

    有以下数据 deptname phone username isboss 部门A 电话1 员工A 0 部门A 电话1 领导A 1 部门B 电话2 员工B 0 部门B 电话2 员工C 0 部门B 电话2 ...

  8. Oracle没有WM_CONCAT函数的解决办法

    解决ORA-00904: "WMSYS"."WM_CONCAT" WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数, ...

  9. oracle中wm_concat函数去重,oracle-常用函数-wm_contact

    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并 如: shopping: --------- ...

最新文章

  1. 线程调度四(setDaemon方法的使用)
  2. First Chapter--Getting Started With Testing
  3. 深入理解 sudo 与 su 之间的区别
  4. java 虚拟机 新生代与老年代gc_java 虚拟机--新生代与老年代GC
  5. 关于setTimeout和setInterval的函数参数问题
  6. 漫步微积分三十六——曲面的面积
  7. php td复制剪贴板,选择一个带有Javascript的完整表格(复制到剪贴板)
  8. [RMAN]表空间的恢复
  9. ORDER BY 子句在视图、派生表、子查询等表达式中无效
  10. 项目意义、必要性分析及需求分析的区别
  11. swagger分页查询报错500
  12. 记一次简单的企业微信推送消息开发(第三方应用开发)
  13. SpringBoot Elasticsearch工具类封装
  14. win7左上角白杠一直闪_win10换win7
  15. B-GT‘s Dream “科林明伦杯“哈尔滨理工大学第八届程序设计竞赛
  16. Win10安装net framework 3.5失败,错误代码0x8024402c
  17. 三菱PLC通过CC LINK IE通讯控制2个三菱伺服的测试 程序,里面有JOG HOME,定位,适合你入门参考。包合IO规划,伺候参数,PLC程序。
  18. JAVA SE (14)
  19. EtherNet IP以太网IO接口工业读写器|读卡器CK-FR12-E01性能与PLC组网攻略
  20. 写给大数据初级开发者或准备转行大数据的人

热门文章

  1. sql server 的after触发器之insert触发器实例
  2. Macintosh-苹果公司1984年推出的革命性产品----转自百度百科
  3. 唐诗《春江花月夜》赏析
  4. linux如何创建快捷,如何在Linux的桌面上创建快捷方式或启动器
  5. InVEST模型——的人类活动、重大工程生态成效评估、论文写作
  6. (gcd,lcm,互质) 康纳的表情包--SDUT,Wolf and Rabbit--HDOJ
  7. rf cable, 什么是射频电缆?
  8. 我们组的OA办公自动化系统
  9. 无刷电机驱动器直流无刷绿篱机园林工具割草机方案
  10. hadoop 面试题收集及个人答案整理