concat、concat_ws、group_concat

一、concat()函数
1、功能:将多个字符串连接成一个字符串。
2、语法:concat(str1, str2,…)
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
select CONCAT(‘a’,‘b’) from dual; – ab
select CONCAT(‘a’,NULL) from dual; – null
select CONCAT(‘a’,’,’,‘b’) from dual; – a,b

二、concat_ws()函数
1、功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~
2、语法:concat_ws(separator, str1, str2, …)
说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。
select CONCAT_WS(’,’,‘a’,‘b’) from dual; – a,b
select CONCAT_WS(null,‘a’,‘b’) from dual; – null

三、group_concat()函数
1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

在有group by的查询语句中,select指定的字段要么就包含在group by语句的后面,作为分组的依据,要么就包含在聚合函数中。
select name min(age) from student GROUP BY name;
name age
小明 3
小明 2
张三 11
张三 6

查询了name相同的的人中最小的年龄。如果我们要查询name相同的人的所有的年龄呢?
select name GROUP_CONCAT(age) form student GROUP BY name;
name age
小明 3,2
张三 11,6

将上面的年龄从大到小排序,且用’_'作为分隔符:
select name group_concat(age order by asc separator ‘-’) from student group by name;

查询以name分组的所有组的年龄和score,并对年龄和score相同的数据去重:
select name group_concat(distinct concat_ws(’,’,age,score) order by age asc) from student group by name;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值