mysql | concat、concat_ws及group_concat简单使用

本文是对 mysql 中字符串的拼接函数 concat 的一个简单总结, 包括 concat, concat_ws, group_concat.
concat 系列的函数, 基本功能都是对参数进行拼接, 不局限于字符串.

学会了本文, 可以使用 leetcode 上的题目进行练习:

测试表

若感兴趣, 可以使用下表进行测试🌵.

-- 建立测试表 orders
CREATE TABLE orders(  
    order_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
    customer_name VARCHAR(255) NOT NULL COMMENT '顾客名称',
    customer_gender ENUM('male', 'female') COMMENT '顾客性别',
    product_name VARCHAR(255) COMMENT '商品',
    sell_time DATETIME NOT NULL COMMENT '销售时间'
) DEFAULT CHARSET UTF8 COMMENT 'concat学习';

-- 插入测试数据
INSERT INTO orders (customer_name, customer_gender, product_name, sell_time)
VALUES
('张三','male','笔记本','2022-04-04'),
('王五','female','短袖','2022-04-04'),
('张三','male','键盘','2022-04-05'),
('赵六','male','笔记本','2022-04-05'),
('张三','male','鼠标','2022-04-05'),
('李四',NULL,'护眼台灯','2022-04-05'),
('李四',NULL,'牛','2022-04-05'),
('王五','female','短袖','2022-04-06'),
('张三','male','键盘','2022-04-07');

表内容如下:
table-orders

CONCAT()

  • 官网文档

  • 语法: CONCAT(str1,str2,...)

  • 功能:

    • 返回由连接参数产生的字符串. 可以有多个参数, 参数可以是字段名/字符串/数字等.
    • ⚠️只要参数中存在 NULL, 那么就会返回 NULL.
  • demo

    SELECT CONCAT(order_id, ': ', customer_name, '-', customer_gender) AS `customer_info`
    FROM orders;
    

    查询结果如下: demo-concat

CONCAT_WS()

  • 官网文档

  • 语法: CONCAT_WS(separator,str1,str2,...)

  • 功能:

    • 该函数的意思是: Concatenate With Separator, 是 CONCAT() 的一种特殊形式.
    • separator: 是连接其余参数之间的分隔符. 分隔符可以是字符串,也可以是其他参数。如果分隔符为 NULL, 则结果为 NULL.
  • 与 CONCAT() 的区别:

    • 如果其他参数中存在 NULL, 那么则会忽略该参数的 NULL, 而会将其余参数连接.
    • 连接符唯一, 不能像 CONCAT() 中随意拼接.
  • demo

    SELECT CONCAT_WS('-' , order_id, customer_name, customer_gender) AS `customer_info`
    FROM orders;
    

    查询结果如下:
    demo-concat_ws

GROUP_CONCAT()

  • 官网文档

  • 语法: GROUP_CONCAT(expr)

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

    表达式 expr 分为三段:

    1. 拼接哪个字段(是否去重)
    2. 按何序拼接(默认升序 ASC)
    3. 拼接分隔符(默认逗号 ',')
  • 功能:

    • 返回一个字符串结果, 其中包含来自分组的串联非 NULL 值.
    • 默认拼接最大长度为 1024, 可修改
  • demo

    SELECT sell_time, GROUP_CONCAT(DISTINCT customer_name ORDER BY order_id DESC) AS `customers`
    FROM orders
    GROUP BY sell_time
    ORDER BY sell_time;
    

    查询结果如下:
    demo-group_concat

个人收获

写下这篇博客主要是学习到了 group_concat 的用法, 可以在聚合后, 对组内的字段进行拼接, SQL函数知识📈.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值