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)使用的逗号(,)而且只能用逗号(,)
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/15868517.html