oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法,多列拼接成一行

1.1 oracle语法wmsys.wm_concat():
SELECT
NAME,
wmsys.wm_concat(subject_1) subject_1
FROM
table_name
GROUP BY
NAME
1.2 oracle语法LISTAGG()(注意,此为Oracle 11g及以上版本提供的语法):
LISTAGG(measure_expr [,‘delimiter’])WITHIN GROUP (order_by_clause) [OVER query_partition_clause]
参数 说明
OVER 使用 OVER 子句定义窗口进行计算。
measure_expr 可以是任何表达式。度量列中的空值将被忽略。
delimiter 指定用于分隔度量值的字符串。此子句是可选的,默认为 NULL。
SELECT
NAME, listagg(subject_1 , ‘,’) within GROUP (ORDER BY NAME)
FROM table_name
GROUP BY NAME
2.1 oracle语法wmsys.wm_concat():

oracle中通过wm_concat(),即可以实现对多列的拼接:

select NAME, wmsys.wm_concat(age || ‘|’ || address) msg
from TK_USER_INFO
group by NAME;

注意:

1、上述SQL中|| ‘|’ || 表示两个列以|分隔,'|'可以换为任意分隔符

1.3 mysql语法group_concat:
SELECT
NAME,
GROUP_CONCAT(distinct subject_1 order by subject_1 asc separator ‘,’) subject_1
FROM
table_name
GROUP BY
NAME
2.2 mysql 语法CONCAT()

select name, CONCAT(age ,address) msg from tk_user_info;

注意:

1、CONCAT拼接的结果不带分隔符

2、如果右任意拼接列为null,则返回null
2.3 mysql 语法CONCAT_WS()

select name, CONCAT_WS(‘,’,age ,address) msg from tk_user_info;

注意:

1、此函数可以定义分隔符,CONCAT_WS() 代表 CONCAT With Separator

2、其语法为CONCAT_WS(separator,str1,str2,…),第一个参数为分隔符,其他为拼接列
2.4 mysql 语法GROUP_CONCAT()

select name, GROUP_CONCAT(age,‘,’,address) msg from tk_user_info group by name;

注意:

1、其语法为(像上面多行拼接的解释中一样,可以进行去冗余、排序、分隔符-可以不同的拼接列后面有不同的分隔符):

GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])

2、此sql用于对某列分组后的各列拼接,因此SQL后必须带有group by

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值