CONCAT函数
功能:连接一个或多个字符串,然后返回连接后的字符串。
函数形式:CONCAT(str1,str2,…)
示例1:单个字符串连接
mysql> select concat('Hello');
+-----------------+
| concat('Hello') |
+-----------------+
| Hello |
+-----------------+
1 row in set (0.00 sec)
示例2:连接多个字符串
mysql> select concat('Hello',' ','world');
+-----------------------------+
| concat('Hello',' ','world') |
+-----------------------------+
| Hello world |
+-----------------------------+
1 row in set (0.00 sec)
示例3:任意连接的字符串为NULL,则连接后返回的结果也为NULL
mysql> select concat('Hello',' ','world',null);
+----------------------------------+
| concat('Hello',' ','world',null) |
+----------------------------------+
| NULL |
+----------------------------------+
1 row in set (0.00 sec)
CONCAT_WS函数
功能:通过指定的“连接符”连接一个或多个字符串,然后返回连接后的字符串。
函数形式:CONCAT_WS(separator,str1,str2,…)
示例1:通过下划线连接多个字符串
mysql> select concat_ws('_','功能编号','需求编号','用例编号');
+-------------------------------------------------------------+
| concat_ws('_','功能编号','需求编号','用例编号') |
+-------------------------------------------------------------+
| 功能编号_需求编号_用例编号 |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
示例2:当连接的字符串中存在NULL时,则连接后返回的结果不为NULL
mysql> select concat_ws('_','功能编号','需求编号','用例编号',null);
+------------------------------------------------------------------+
| concat_ws('_','功能编号','需求编号','用例编号',null) |
+------------------------------------------------------------------+
| 功能编号_需求编号_用例编号 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)
示例3:当分隔符为null时,则返回的结果也为NULL
mysql> select concat_ws(null,'功能编号','需求编号','用例编号');
+--------------------------------------------------------------+
| concat_ws(null,'功能编号','需求编号','用例编号') |
+--------------------------------------------------------------+
| NULL |
+--------------------------------------------------------------+
1 row in set (0.00 sec)
GROUP_CONCAT函数
功能:将属于同一分组的值进行连接,然后按分组返回结果字符串。
函数形式:GROUP_CONCAT(expr)
示例数据,假设Course表存在以下数据
mysql> select * from Course;
+-------+--------------+
| stuId | courseName |
+-------+--------------+
| 1001 | 大学语文 |
| 1001 | 原理力学 |
| 1001 | 固体物理 |
| 1002 | 大学英语 |
| 1002 | 专八英语 |
+-------+--------------+
5 rows in set (0.00 sec)
示例1:获取每个学生的所有课程,并在一行显示
mysql> SELECT stuId, GROUP_CONCAT(courseName) AS courses FROM Course GROUP BY stuId;
+-------+----------------------------------------+
| stuId | courses |
+-------+----------------------------------------+
| 1001 | 大学语文,原理力学,固体物理 |
| 1002 | 大学英语,专八英语 |
+-------+----------------------------------------+
2 rows in set (0.02 sec)
示例2:GROUP_CONCAT的默认分隔符为“,”,也可通过SEPARATOR定义分隔符
mysql> SELECT stuId, GROUP_CONCAT(courseName SEPARATOR '&&') AS courses FROM Course GROUP BY stuId;
+-------+------------------------------------------+
| stuId | courses |
+-------+------------------------------------------+
| 1001 | 大学语文&&原理力学&&固体物理 |
| 1002 | 大学英语&&专八英语 |
+-------+------------------------------------------+
2 rows in set (0.00 sec)
示例3:对同一分组内的值进行排序后在连接
mysql> SELECT stuId, GROUP_CONCAT(courseName ORDER BY courseName desc) AS courses FROM Course GROUP BY stuId;
+-------+----------------------------------------+
| stuId | courses |
+-------+----------------------------------------+
| 1001 | 大学语文,固体物理,原理力学 |
| 1002 | 大学英语,专八英语 |
+-------+----------------------------------------+
2 rows in set (0.00 sec)