Oracle中的wm_concat()函数

一、wm_concat()函数是oracle中独有的,mysql中有一个group_concat()函数。

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

下面我们就来实现一下:

我要把local_labour_name这个字段用逗号拼接成一条数据。

然后我们需要加上wm_concat()这个函数,但是我这边加上的时候出现了问题:

这并不是我想要的结果,最后我看了看哪里出现了问题,原来是字段类型没对上,我们这边需要to_char()一下;

这个时候我们就得到了我们想要的结果。如果我们的查询到的结果中有重复怎么办?我们可以再前面加上distinct来去除重复。
注意事项:
该函数返回的数据类型是clob 未超过4000 可以用to_char转换。

在oracle11g中 wm_concat函数已不被oracle 推荐使用,该函数是在8i版本引入。但是oracle引入了替代的函数listagg

SELECT LISTAGG(last_name, '; ')

WITHIN GROUP (ORDER BY hire_date, last_name) "Emp_list",

MIN(hire_date) "Earliest"

FROM employees

WHERE department_id = 30;
    Emp_list                                                                       Earliest

Raphaely; Khoo; Tobias; Baida; Himuro; Colmenares 07-DEC-02
这里是用分号(;)分割,当然你也可以用其它字符替代 比如上面替换函数(wm_concat)使用的逗号(,)而且只能用逗号(,)

posted @ 2022-02-07 17:05  King-DA  阅读(795)  评论(0编辑  收藏  举报