MySQL合并多列数据之CONCAT()函数和CONCAT_WS()函数(字符串连接函数)
MySQL合并多列数据之CONCAT函数和CONCAT_WS函数一.函数描述二、创建表和添加测试数1、创建表2、添加测试数据3、表图三、编写测试SQL语句1、函数concat()2、函数CONCAT_WS()一.函数描述菜鸟教程中的函数描述:https://www.runoob.com/mysql/mysql-functions.html函数描述CONCAT(s1,s...
·
MySQL合并多列数据之CONCAT函数和CONCAT_WS函数
一、函数描述
函数 | 描述 |
---|---|
CONCAT(s1,s2…sn) | 字符串 s1,s2 等多个字符串合并为一个字符串 |
CONCAT_WS(x, s1,s2…sn) | 同 CONCAT(s1,s2,…) 函数,但是每个字符串之间要加上 x,x 可以是分隔符 |
二、创建表和添加测试数
1、创建表
- 建表语句:
-- 人员信息表
CREATE TABLE `person` (
`id` int(10) NOT NULL COMMENT '主键',
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`room_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '房间id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- 房间信息表
CREATE TABLE `room` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '房间表主键',
`room_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '房间名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=203 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2、添加测试数据
- 测试数据:
-- 人员信息测试数据
insert into `person`(`id`,`name`,`room_id`) values
(1,'仪凯','101'),
(2,'包莉','102'),
(3,'李天斌','101'),
(4,'孙灿','103'),
(5,'宋凯','103'),
(6,'图谊','201'),
(7,'刘敏','202'),
(8,'王志成','202'),
(9,'王波','101'),
(10,'晨德峰','102');
--房间信息测试数据
insert into `room`(`id`,`room_name`) values
(101,'办公室101'),
(102,'办公室102'),
(103,'办公室103'),
(201,'办公室201'),
(202,'办公室202'),
(203,'办公室203');
3、表图
- 人员信息表(左)和房间信息表(右)
三、编写测试SQL语句
1、函数CONCAT()
- 功能:将多列数据合并成一列;
- 语法:CONCAT(s1,s2…sn);
- 结果:将多列结果合并成一列进行展示,注意如果合并对象中有一列的值为null,那么返回结果也会为null;
- 示例一:
两表关联:
SELECT
*
FROM
room t1
LEFT JOIN person t2
ON t1.id = t2.room_id
结果:
- 使用函数concat():
SELECT
t1.id,
CONCAT (t1.room_name, t2.name)
FROM
room t1
LEFT JOIN person t2
ON t1.id = t2.room_id
- 结果:可以看到房间表203人员表信息为null,在合并后结果显示为null;
- 示例二:在示例一种得到的结果将t1.room_name和t2.name两个字段合并成一个字段返回,两个字段间没有分隔符,接下来添加分隔符;
SELECT
t1.id,
CONCAT (t1.room_name, ',', t2.name)
FROM
room t1
LEFT JOIN person t2
ON t1.id = t2.room_id
- 结果:这种写法虽然可以达到想要的效果,但是如果合并n个字段就需要拼接n个分隔符,所以这就有了concat_ws()函数;
2、函数CONCAT_WS()
- 功能:将多列数据合并成一列,且可以指定分隔符;
- 语法:CONCAT_WS(x, s1,s2…sn);
- 结果:第一个参数指定分隔符,将多列结果合并成一列且按指定分隔符进行分割展示,注意分隔符不能为null,如果为null,则返回结果为null。
- 示例一:
SELECT
t1.id,
CONCAT_WS ('-', t1.room_name, t2.name)
FROM
room t1
LEFT JOIN person t2
ON t1.id = t2.room_id
- 结果:分隔符 ‘-’,结果可以看到房间表203合并后的值并是不null,合并值两列中有null,但是合并后结果并不为null
- 示例二:
SELECT
t1.id,
CONCAT_WS (NULL, t1.room_name, t2.name)
FROM
room t1
LEFT JOIN person t2
ON t1.id = t2.room_id
- 结果:分隔符null,得到结果全为null
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)