MySQL中实现字符串拼接有以下几种方法:concat、concat_ws、lpad、rpad、group_concat,他们分别适用拼接字符串、用分隔符拼接、按照分组拼接、拼接后保留n位字符等不同场景。

一、拼接方式

二、具体用法

类型 类别 函数名 描述
多列拼接成一列
拼接字符串
concat(str1,str2...strn) 字符串 str1,str2 等多个字符串合并为一个字符串
用分隔符拼接
concat_ws(delimiter, str1,str2...strn) 同concat(str1,str2,...) 函数,但是每个字符串之间要加上分隔符 delimiter
concat(str1,delimiter,...,delimiter,strn) 字符串 str1,delimiter,str2 等多个字符串合并为一个字符串
拼接后保留n位字符
lpad(str1,length,str2) 在字符串 str1 的开始处填充字符串 str2,使字符串长度达到 length
rpad(str1,length,str2) 在字符串 str1 的结尾处添加字符串 str2,使字符串的长度达到 length
多行拼接成一列 按照分组拼接 group_concat(str1 order by str2 desc Separator str3) 按照分组拼接字符串。distinct去重;order by子句用于组内排序;separator分隔符是一个字符串值,缺省为一个逗号。

扩展
前往查看:MySQL 字符串函数

三、实例

(1)多列拼接成一列。

select
#拼接多个字符串:concat('student', '学生', 12, '%'),                     #student学生12%
#拼接多个字符串,并添加分隔符:concat_ws('+', 'student', '学生', 12, '%'),                #student+学生+12+%concat('student','+', '学生','+', 12,'+', '%'),         #student+学生+12+%
#将字符串 '12.45' 拼接到 '%' 字符串的开始处,最终保留5个字符:lpad('%',5,'12.45'),                                   #12.4%
#将字符串 '%' 拼接到 '12.45' 字符串的结尾处,最终保留5个字符:rpad('12.45',6,'%')                                        #12.45%#输出结果:student学生12%|student+学生+12+%|student+学生+12+%|12.4%|12.45%

(2)按照分组拼接:多行拼接成一列

select
#按照学生姓名分组拼接字符串group_concat(name),                                           #李明,张三,孙华,刘平,孙华
#按照去重后的学生姓名分组拼接字符串group_concat(distinct name),                              #刘平,孙华,张三,李明
#按照学生姓名分组拼接字符串, 拼接按照name升序的先后顺序group_concat(name order by name),                            #刘平,孙华,孙华,张三,李明
#按照学生姓名分组拼接字符串,并添加分隔符';'group_concat(name Separator ';'),                            #李明;张三;孙华;刘平;孙华
#按照学生姓名分组拼接字符串, 拼接按照name升序的先后顺序, 并添加分隔符';'group_concat(name order by name desc Separator ';'),      #李明;张三;孙华;孙华;刘平
#按照去重后的(学生姓名和成绩)分组拼接字符串, 拼接按照name升序的先后顺序, 并添加分隔符';'group_concat(distinct concat_ws('、',name,score) order by name desc Separator ';')                                            #李明、67;张三、74;孙华、90;孙华、87;刘平、56
from students#输出结果:李明,张三,孙华,刘平,孙华|刘平,孙华,张三,李明|刘平,孙华,孙华,张三,李明|李明;张三;孙华;刘平;孙华|李明;张三;孙华;孙华;刘平|李明、67;张三、74;孙华、90;孙华、87;刘平、56

students 表 (id表示主键,name是姓名,score是平均成绩)

id name score
1 李明 67
2 张三 74
3 孙华 87
4 刘平 56
5 孙华 90

创建 students 表的代码

-- ----------------------------
-- Table structure for students
-- ----------------------------
DROP TABLE IF EXISTS `students`;
CREATE TABLE `students`  (`id` int(11) NOT NULL,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',`score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成绩',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of students
-- ----------------------------
INSERT INTO `students` VALUES (1, '李明', '67');
INSERT INTO `students` VALUES (2, '张三', '74');
INSERT INTO `students` VALUES (3, '孙华', '87');
INSERT INTO `students` VALUES (4, '刘平', '56');
INSERT INTO `students` VALUES (5, '孙华', '90');

MySQL 字符串拼接 concat、concat_ws、lpad、rpad、group_concat相关推荐

  1. mysql字符串拼接 空值_mysql字符串拼接并设置null值的实例方法

    #字符串拼接 concat(s1,s2); 将表中last_name和first_name中的字符串拼接 select concat(last_name,first_name) as 姓名 from ...

  2. 详解MySQL字符串函数CONCAT()、CONCAT_WS()、INSERT()、REPLACE()、LOWER()、UPPER()用法(二)

    文章目录 一.合并字符串函数CONCAT()和CONCAT_WS() 1.CONCAT() 2.CONCAT_WS() 二.替换字符串INSERT()和REPLACE 1.INSERT() 2.REP ...

  3. JAVA的MySQL字符串拼接_字符串的拼接-MYSQL

    SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外.比如我们需要以"工号+姓名"的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符串类型的字段拼接计算: ...

  4. MySQL 字符串拼接

    在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,-)   说明 : string1,string2代表字符串,concat ...

  5. MySQL字段拼接Concat

    有时候,从数据库中拿出的数据并不是我们想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展现出来,那么就要用到MySQL的Concat了. Concat()拼 ...

  6. mysql 新增拼接_mysql insert into新增group_concat查询出来拼接的数据

    mysql insert into新增group_concat查询出来拼接的数据如何实现? 代码如下: INSERT INTO yt_keywords ( id, post_keywords ) SE ...

  7. mysql存储过程concat_mysql 存储过程 CONCAT 字符串拼接

    mysql 存储过程 CREATE PROCEDURE pro_province_report (IN startDate VARCHAR(),IN endDate VARCHAR(),IN Sour ...

  8. mysql与oracle互转【数据库条件判断+数据库日期+数据库字符串拼接+数据库获取星期】

    mysql与oracle互转 对比 一览表 1.条件判断 2.日期增减 3.日期格式 4.字符串拼接 5.获取星期 相同 对比 一览表 功能 mysql oracle 条件判断 if(expr1,ex ...

  9. mysql groupby字符串拼接

    使用group_concat聚合函数将字符串拼接起来: select buyer_id,group_concat(query)  from order_source where query !=&qu ...

最新文章

  1. 和12岁小同志搞创客开发:如何选择合适的传感器?
  2. android离散点贝塞尔曲线,离散点拟合曲线贝塞尔曲线B样条.ppt
  3. 使用Typescript重写axios
  4. linux i2c 设备节点读写
  5. 用python 中的链表 实现 截取其中一部分_Python数据结构——链表的实现
  6. 飞桨抠图直播2020.4.1
  7. 获取硬盘总容量,柱面数,磁道数,扇区数
  8. 史上最全AI论文集结:近千篇论文分门别类整理好
  9. 软工总结暨团队成员自评(胡骏)
  10. vmware ethx的修改
  11. 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
  12. oracle分析函数技术详解(配上开窗函数over())
  13. 安装linux需要最少磁盘分区是多少,320G硬盘只安装Linux分区方案
  14. _stdcall的作用
  15. 手机连接电脑后,QT的QDIR怎么读取手机文件路径
  16. c语言编译器怎么防止优化变量,volatile关键字的作用:防止变量被编译器优化
  17. 西安交大计算机学院 栾佳锡,史椸-西安交通大学-自动化科学与工程学院
  18. react-native系列(13)动画篇:Animated动画库和LayoutAnimation布局动画详解
  19. what 's Trac?
  20. PS容器包装样机设计教程分享

热门文章

  1. OJ 7218 献给阿尔吉侬的花束__广搜
  2. 微服务(二)服务拆分及远程调用
  3. 「预约挂号小程序」为什么预约支付存在6‰的手续费?
  4. 软件系统的可扩展性设计
  5. 我今后再也不吃沙琪瑪了,伤不起啊
  6. 全球与中国基于账户的营销平台市场现状及未来发展趋势
  7. 我就想要一个1024勋章
  8. HBase 索引表结构
  9. 【Linux】jupyter简介,搭建和部署jupyter
  10. 使用TextView实现带动画的统计图