本文共 2137 字,大约阅读时间需要 7 分钟。
作为数据库开发人员,熟悉MySQL 中的字符串连接函数是必不可少的。以下将详细介绍几种常用的字符串连接函数,包括 CONCAT
、CONCAT_WS
和 GROUP_CONCAT
,并通过实例说明其用法。
CONCAT
函数用于将两个字符串连接起来,形成一个单一的字符串。其基本语法如下:
CONCAT(str1, str2, ...)
示例:
SELECT CONCAT('FIRST ', 'SECOND');
运行结果如下:
CONCAT('FIRST ', 'SECOND') |
---|
FIRST SECOND |
这表明 CONCAT
函数能够简单地将两个字符串拼接起来。
在实际应用中,CONCAT
可用于将多个字段进行连接。例如,假设 employee_tbl
表包含以下记录:
SELECT * FROM employee_tbl;
运行结果如下:
id | name | work_date | daily_typing_pages |
---|---|---|---|
1 | John | 2007-01-24 | 250 |
2 | Ram | 2007-05-27 | 220 |
3 | Jack | 2007-05-06 | 170 |
3 | Jack | 2007-04-06 | 100 |
4 | Jill | 2007-04-06 | 220 |
5 | Zara | 2007-06-06 | 300 |
5 | Zara | 2007-02-06 | 350 |
如果需要将员工ID、姓名和工作日期连接起来,可以使用以下命令:
SELECT CONCAT(id, name, work_date) FROM employee_tbl;
运行结果如下:
CONCAT(id, name, work_date) |
---|
1John2007-01-24 |
2Ram2007-05-27 |
3Jack2007-05-06 |
3Jack2007-04-06 |
4Jill2007-04-06 |
5Zara2007-06-06 |
5Zara2007-02-06 |
CONCAT_WS
是 CONCAT
的一种变种,用于在字符串之间插入指定的分隔符。其语法如下:
CONCAT_WS(separator, str1, str2, ...)
示例:
SELECT CONCAT_WS(',','11','22','33');
运行结果如下:
CONCAT_WS(',','11','22','33') |
---|
11,22,33 |
与 CONCAT
不同的是,CONCAT_WS
会忽略 NULL
值。例如:
SELECT CONCAT_WS(',','11','22',NULL);
运行结果如下:
CONCAT_WS(',','11','22',NULL) |
---|
11,22 |
#### 3. GROUP_CONCAT 函数的基本应用`GROUP_CONCAT` 用于在组内的记录中将多个字段连接起来。其语法如下:```sqlGROUP_CONCAT([DISTINCT] column_name [ORDER BY ...] [SEPARATOR ...])
示例:
假设 aa
表包含以下记录:
SELECT * FROM aa;
运行结果如下:
id | name |
---|---|
1 | 10 |
1 | 20 |
1 | 20 |
2 | 20 |
3 | 200 |
3 | 500 |
如果需要按 id
分组,将 name
字段连接起来,可以使用以下命令:
SELECT id, GROUP_CONCAT(name) FROM aa GROUP BY id;
运行结果如下:
id | GROUP_CONCAT(name) |
---|---|
1 | 10,20,20 |
2 | 20 |
3 | 200,500 |
如果需要自定义分隔符,可以使用 SEPARATOR
参数:
SELECT id, GROUP_CONCAT(name separator ';') FROM aa GROUP BY id;
运行结果如下:
id | GROUP_CONCAT(name separator ';') |
---|---|
1 | 10;20;20 |
2 | 20 |
3 | 200;500 |
如果需要去重,可以使用 DISTINCT
参数:
SELECT id, GROUP_CONCAT(DISTINCT name) FROM aa GROUP BY id;
运行结果如下:
id | GROUP_CONCAT(DISTINCT name) |
---|---|
1 | 10,20 |
2 | 20 |
3 | 200,500 |
如果需要按 name
排序,可以使用 ORDER BY
参数:
SELECT id, GROUP_CONCAT(name order by name desc) FROM aa GROUP BY id;
运行结果如下:
id | GROUP_CONCAT(name order by name desc) |
---|---|
1 | 20,20,10 |
2 | 20 |
3 | 500,200 |
通过以上示例,可以看出 CONCAT
、CONCAT_WS
和 GROUP_CONCAT
在实际应用中具有广泛的用途。无论是简单的字符串拼接,还是复杂的字段连接,都是开发人员日常工作中的常见需求。掌握这些函数的用法,能够显著提升数据库操作的效率。
转载地址:http://bvbfk.baihongyu.com/