MySQL学习笔记:concat、concat_ws、group_concat —— 字符串连接

  在MySQL中,实现字符串拼接主要有以下3种函数:
  • concat(x,y,...)
  • concat_ws(分隔符,x,y,...)
  • group_concat(distinct xxx order by asd/desc yyy separator '分隔符')

一、concat函数

  concat()函数用于将多个字符串连接成一个字符串

  格式:concat(str1,str2,...)

-- mysql concat() --
SELECT CONCAT('I','love','somebody'); # Ilovesomebody
SELECT CONCAT('I',NULL,'somebody'); # NULL
SELECT CONCAT(14.4); # 14.4

注意:

  •   如果有任何一个参数为NULL,则返回值为NULL;
  •   如果所有参数为非二进制字符串,则返回非二进制字符串;
  •   如果含有任一二进制字符串,则返回一个二进制字符串;
  •   数字参数也会被转化为与之相等的二进制字符串格式,若要避免这种情况,可使用显式类型 cast,例如:
SELECT CONCAT(CAST(col_a AS CHAR), col_b) FROM table_xxx;

二、concat_ws函数

  concat_ws函数,concat with separator 分隔符,是concat()的特殊形式。

  格式:concat_ws(separator, str1, str2,...)

  •   第一个参数为分隔符,放在两个要连接的字符串之间。
SELECT CONCAT_WS('-','First','Second','Third'); # First-Second-Third
SELECT CONCAT_WS('-','First',NULL,'Third'); # First-Third

注意:

  •   如果分隔符为NULL,则结果为NULL;
  •   函数会忽略任何分隔符参数后的NULL值;
  •   函数不会忽略任何空字符串,但是会忽略所有NULL值;

三、group_concat函数

   group_concat函数,实现分组查询之后的数据进行合并,并返回一个字符串结果。

  格式:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc  ] [separator '分隔符'] )

  •   通过使用distinct可以排除重复值;
  •   如果希望对结果中的值进行排序,可以使用order by子句;
  •   separator是一个字符串值,默认为逗号分隔。
SELECT id, 
    GROUP_CONCAT(DISTINCT num ORDER BY num DESC SEPARATOR '$') AS cont
FROM test.t_2 
GROUP BY id;

结果:

  

 group_concat还可以与concat_ws嵌套使用,实现更加复杂功能。


四、其他字符串连接杂谈

  • “+” & || (不行)
  • Mysql使用“+”进行字符拼接的时候,会尝试将两端的字段值转换为数字类型,如果转换失败则认为字段值为0
  • oracle使用||进行字符串拼接,concat 只支持2个参数,可以多个嵌套使用
  • MS 使用+进行字符串拼接

END 2018-05-18 15:02:49 

posted @   Hider1214  阅读(1101)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示