oracle中wm_conocat()函数的应用

236 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

简述

在数据查询时,分组查询后想把其他字段值合并起来作为一个字段值,这是会用到wm_concat()函数。

示例

让我们创建一张test表,并且对其进行数据的填充,表test如下:

创建SQL如下:

create table TEST
(
  DEPT_CODE VARCHAR2(150),
  DEPT_NAME VARCHAR2(150),
  USER_CODE VARCHAR2(150),
  USER_NAME VARCHAR2(150)
)

图片.png

我们现在的要求是什么呢?

那就是要按照dept_code,dept_name分组后,将uesr_code,user_name合并为一个字段,以此来向前台提供相关数据。

查询sql如下所示:

select t.dept_code,t.dept_code,wm_concat(t.user_code),wm_concat(t.user_name) from test t group by t.dept_code,t.dept_name

查询结果如下图所示

在图中可以看出来目前已经将uesr_code,user_name合并为一个字段,而且将原本uesr_code,user_name中的内容拼接在一起了。非常满足我们的需求。

图片.png

需求扩展

虽然现在实现了分组合并字段,但是有的字段里可能是会出现重复值的,这个我们又要如何去解决一下呢?

自然就是要去重了,这里就可以使用 distinct 进行去重。

查询SQL如下所示:

select t.dept_code,t.dept_code,wm_concat(distinct t.user_code),wm_concat(distinct t.user_name) from test t group by t.dept_code,t.dept_name

查询结果如下图所示

图片.png

在图中我们就可以看到一个完美无缺的结果了,没有像上一步出现的重复值问题了,就此这个需求就算是搞定了。