MySQL之字符串拼接

涉及方法:concat, concat_ws, group_concat

数据准备:

CREATE TABLE `app` (
  `app_id` int DEFAULT '0',
  `version_code` int DEFAULT '0',
  `download_count` int DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (1, 10, 90);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (1, 11, 100);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (1, 10, 20);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (2, 15, 10);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (2, 16, 15);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (2, 17, 30);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (2, 16, 5);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (3, 2, 50);
INSERT INTO `app`(`app_id`, `version_code`, `download_count`) VALUES (4, 9, NULL);

一、concat()

  1. 功能:将多个字符串连接成一个字符串
  2. 语法:concat(str1, str2, ...)
  3. 说明:返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null
select concat (app_id, ',', version_code, ',', download_count) as info from app;

 

二、concat_ws()

  1. 功能:concat with separator,和concat()一样,但可以一次性指定分隔符将多个字符串连接成一个字符串
  2. 语法:concat_ws(separator, str1, str2, ...)
  3. 说明:separator指定分隔符
select concat_ws (',', app_id, version_code, download_count) as info from app;

 

三、group_concat()

  1.  功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果
  2.  语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc] [separator '分隔符'] );group_concat(expr)
  3.  说明:distinct排除重复值,order by子句对结果集进行排序,separator指定分隔符,缺省为逗号;expr为表达式
select app_id, 
group_concat(distinct version_code ORDER BY version_code separator '-') as res1, 
group_concat(concat_ws('-', version_code, download_count)) as res2
from app group by app_id;

注意点:

  1. 有字段值为null时concat和concat_ws拼接后的结果有所不同,结果图中红框圈注
  2. concat_ws第一个参数(指定分隔符)若为null,返回结果为null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值