MySQL 中的 CONCAT

MySQL 中的 CONCAT 函数

MySQL 中字符串函数 CONCAT 有三个:

  • CONCAT(s1, s2, ...)
  • CONCAT_WS(x, s1, s2, ...)
  • GROUP_CONCAT( [ DISTINCT ] 字段名 [ ORDER BY 排序字段 ASC/DESC ] [ SEPARATOR '分隔符' ] )

函数说明

CONCAT(s1, s2, ...)
# 返回结果为连接参数产生的字符串。如果有任何一个参数为 NULL, 则返回值为 NULL
# 如果结果中含有任一二进制字符串,则结果为一个二进制字符串
# 一个数字参数被转化为阈值相等的二进制字符串格式,若要避免这种形况,可以使用显式类型 CAST 例: SELECT CONCAT( CAST(int_col AS CHAR) ,char_col )
CONCAT_WS(x, s1, s2, ...) 
# 同 CONCAT 函数,不同的是,字符串减通过 x 分隔
GROUP_CONCAT( [ DISTINCT ] col [ ORDER BY order_col ASC/DESC ]  [ SEPARATOR x ] ) 
# 用于( GROUP BY )分组查询中,将同一分组的指定字段通过 上面的 CONCAT 连接
# DISTINCT 可选去重 , ORDER BY 可选排序 , SEPARATOR 可选分隔符,默认为 ','
# col 为需要连接的字段名,order_col 为排序字段, x 为分隔符

函数使用示例 这里使用 LeetCode 1484.按日期分组销售产品 题目作为使用示例(不含题解):

# 表数据
Activities 表:
+------------+-------------+
| sell_date  | product     |
+------------+-------------+
| 2020-05-30 | Headphone   |
| 2020-06-01 | Pencil      |
| 2020-06-02 | Mask        |
| 2020-05-30 | Basketball  |
| 2020-06-01 | Bible       |
| 2020-06-02 | Mask        |
| 2020-05-30 | T-Shirt     |
+------------+-------------+

当我们执行以下SQL语句时返回结果
CONCAT

SELECT CONCAT(sell_date, '   ' , product) date_product FROM ACtivities;
# 返回结果
# +------------+-------------+
# |     date_product         |
# +------------+-------------+
# | 2020-05-30   Headphone   |
# | 2020-06-01   Pencil      |
# | 2020-06-02   Mask        |
# | 2020-05-30   Basketball  |
# | 2020-06-01   Bible       |
# | 2020-06-02   Mask        |
# | 2020-05-30   T-Shirt     |
# +------------+-------------+

CONCAT_WS

SELECT CONCAT_WS('_', sell_date, product) date_product FROM ACtivities;
# 返回结果
# +------------+-------------+
# |     date_product         |
# +------------+-------------+
# |  2020-05-30_Headphone    |
# |  2020-06-01_Pencil       |
# |  2020-06-02_Mask         |
# |  2020-05-30_Basketball   |
# |  2020-06-01_Bible        |
# |  2020-06-02_Mask         |
# |  2020-05-30_T-Shirt      |
# +------------+-------------+

GROUP_CONCAT

SELECT GROUP_CONCAT( product ) products 
    FROM ACtivities
    GROUP BY sell_date;
# 返回结果
# +------------+----------+-------+
# |  products                     |
# +------------+----------+-------+
# |  Headphone,Basketball,T-shirt |
# |  Pencil,Bible                 |
# |  Mask                         |
# +------------+----------+-------+
posted @ 2022-10-23 23:07  PupilXIao  阅读(577)  评论(0编辑  收藏  举报