MySQL函数&关键字(三)字符串 concat()/concat_ws()+coalesce()

MySQL 官方手册 8.0 Reference Manual - CONCAT(str1,str2,…)

GROUP_CONCAT()

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

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

例1:对于每个球队,得到其编号和所有球员的编号

mysql> select name,group_concat(id order by id desc separator ',') 'group_concat'
    -> from t1
    -> group by name;
+--------+------------------------+
| name   | group_concat           |
+--------+------------------------+
|老王     | 83,57,44,8,6,2         |
|张三     | 112,104,27,8           |
+--------+------------------------+
2 rows in set (0.01 sec)

如果没有group by子句,group_concat返回一列的所有值

例2:得到所有的罚款编号列表

mysql> select group_concat(paymentno)
    -> from PENALTIES;
+-------------------------+
| group_concat(paymentno) |
+-------------------------+
| 1,2,3,4,5,6,7,8         |
+-------------------------+
1 row in set (0.00 sec)

concat()函数

​ 将多个字符串连接成一个字符串。concat(str1, str2,...)

​ 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

​ 如果要指定分隔符,需要concat('111', ',' ,'222' ',' ,'333') 一个个拼接

concat_ws()函数

​ 将多个字符串连接成一个字符串,可以指定分隔符(concat_ws就是concat with separator)。concat_ws(separator, str1, str2, ...)

​ 第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

附:参数判断coalesce()

返回参数中的第一个非空表达式(从左向右依次类推),是一个可变参函数,可以使用多个参数。

接受多个参数,返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。

IFNULL(expression, alt_value) 如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
SELECT IFNULL(NULL,'test');	#test
SELECT IFNULL('wang','test');	#wang
SELECT IFNULL(NULL,NULL);	#NULL

SELECT COALESCE('wang','test');	#wang
SELECT COALESCE(NULL,'test');		#test
SELECT COALESCE('wang','test','test1','test2');	#wang
SELECT COALESCE(NULL,NULL,NULL,'test2');	#test2
SELECT COALESCE(NULL,NULL,NULL,NULL);	#NULL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值