按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。
1、 合并
MySQL数据库中按照指定字符合并可以直接用group_concat来实现。
创建测试表
mysql> create table tb_group(id int auto_increment primary key ,col1 varchar(20));
Query OK,0 rows affected (0.01 sec)
插入测试数据
mysql> insert into tb_group(col1) values('a'),('c'),('dddd'),('ewdw'),('vxgdh');;
Query OK,5 rows affected (0.01sec)
Records:5 Duplicates: 0 Warnings: 0
合并col1字段的内容
默认是按照逗号进行合并的,例如:
mysql> select group_concat(col1) fromtb_group;+---------------------+
| group_concat(col1) |
+---------------------+
| a,c,dddd,ewdw,vxgdh |
+---------------------+
1 row in set (0.01 sec)
指定分隔符合并,例如指定使用 || 符号进行合并
mysql> select group_concat(col1,'||') fromtb_group;+-------------------------------+
| group_concat(col1,'||') |
+-------------------------------+
| a||,c||,dddd||,ewdw||,vxgdh|| |
+-------------------------------+
1 row in set (0.00 sec)
注意
默认情况下,合并后的长度不能超过1024,否则结果会被截断
例如,我再写个脚本插入一些数据
# 使用shell脚本来实现
vim test_insert.sh# 添加如下内容
#!/bin/bash
# gjcfor i in {1..1025}domysql-uroot -p'123456' --socket=/data/mysql3306/tmp/mysql.sock -e "insert into testdb.tb_group1(col1)values('a')"
done# 运行脚本插入数据
sh test_insert.sh
mysql> select count(*)fromtb_group;+----------+
| count(*) |
+----------+
| 1030 |
+----------+
1 row in set (0.00 s