企业网站源码 可去版权,南昌网站建设模板下载网址,四川省建设厅官网站,哪里有网站开发企业1.concat concat()函数是将多个字符串组合在一起#xff0c;形成一个大的字符串#xff1b;如果连接的字符串中存在一个为NULL#xff0c;则输出的结果为NULL#xff0c;语法格式为#xff1a; concat(str1,str2,....strn)
-- 1、字符之间不加连接符
mysql select c… 1.concat concat()函数是将多个字符串组合在一起形成一个大的字符串如果连接的字符串中存在一个为NULL则输出的结果为NULL语法格式为 concat(str1,str2,....strn)
-- 1、字符之间不加连接符
mysql select concat(01,赵雷,男);
-----------------------------
| concat(01,赵雷,男) |
-----------------------------
| 01赵雷男 |
-----------------------------
1 row in set (0.00 sec)-- 2、字符之间添加连接符
mysql select concat(01-,赵雷-,男);
-------------------------------
| concat(01-,赵雷-,男) |
-------------------------------
| 01-赵雷-男 |
-------------------------------
1 row in set (0.00 sec)-- 3、忽略空字符串
mysql mysql select concat(01,赵雷,,男);
--------------------------------
| concat(01,赵雷,,男) |
--------------------------------
| 01赵雷男 |
--------------------------------
1 row in set (0.00 sec)-- 4、存在NULL的情况
mysql select concat(01,赵雷,NULL,男); -- 结果直接显示为NULL
----------------------------------
| concat(01,赵雷,NULL,男) |
----------------------------------
| NULL |
----------------------------------
1 row in set (0.01 sec)
上面的NULL是MySQL中NULL如果NULL本身就是字符串则结果不相同
mysql select concat(01,赵雷,NULL,男);
------------------------------------
| concat(01,赵雷,NULL,男) |
------------------------------------
| 01赵雷NULL男 |
------------------------------------
1 row in set (0.01 sec)
2.concat_ws concat_ws()函数相比较于concat()多了一个指定的连接符号语法为 concat_ws(separator, str1, str2, str3)
-- 1、指定不同的连接符号分别指定逗号和加号mysql select concat_ws(,,01,赵雷,男);
------------------------------------
| concat_ws(,,01,赵雷,男) |
------------------------------------
| 01,赵雷,男 |
------------------------------------
1 row in set (0.00 sec)mysql select concat_ws(,01,赵雷,男);
------------------------------------
| concat_ws(,01,赵雷,男) |
------------------------------------
| 01赵雷男 |
------------------------------------
1 row in set (0.00 sec)-- 2、不忽略空字符串
mysql select concat_ws(,01,赵雷,,男);
---------------------------------------
| concat_ws(,01,赵雷,,男) |
---------------------------------------
| 01赵雷男 |
---------------------------------------
1 row in set (0.00 sec)-- 3、忽略NULL不管几个NULL都会忽略
mysql select concat_ws(,01,赵雷,NULL,男);
-----------------------------------------
| concat_ws(,01,赵雷,NULL,男) |
-----------------------------------------
| 01赵雷男 |
-----------------------------------------
1 row in set (0.00 sec)-- 忽略两个NULL
mysql select concat_ws(,01,NULL,赵雷,NULL,男);
----------------------------------------------
| concat_ws(,01,NULL,赵雷,NULL,男) |
----------------------------------------------
| 01赵雷男 |
----------------------------------------------
1 row in set (0.00 sec)
3.group_concat
group分组的意思concat连接。合起来就是分组连接具体语法为
GROUP_CONCAT(DISTINCT expression ORDER BY expression SEPARATOR sep);
DISTINCT子句用于在连接分组之前消除组中的重复值ORDER BY 连接之前按升序或者降序排列。默认是升序SEPARATOR指定在组中的值之间插入的文字值。如果不指定分隔符则GROUP_CONCAT函数使用逗号()作为默认分隔符函数会自动忽略NULL值如果所有的参数都是NULL则结果返回NULLGROUP_CONCAT函数返回二进制或非二进制字符串取决于参数。 默认情况下返回字符串的最大长度为1024。通过在SESSION或GLOBAL级别设置group_concat_max_len系统变量来扩展最大长度。
set session group_concat_max_len18783847439738273; -- 防止超出范围数据被截掉
-- 1、将每个学生的成绩单独列出来
mysql select s_id, group_concat(s_score) from Score group by s_id;
-----------------------------
| s_id | group_concat(s_score) |
-----------------------------
| 01 | 80,90,96 |
| 02 | 70,60,80 |
| 03 | 80,81,85 |
| 04 | 50,40,30 |
| 05 | 76,87 |
| 06 | 43,56 |
| 07 | 89,94 |
-----------------------------
7 rows in set (0.01 sec)-- 2、指定连接符
mysql select s_id, group_concat(s_score separator ) from Score group by s_id;
-------------------------------------------
| s_id | group_concat(s_score separator ) |
-------------------------------------------
| 01 | 809096 |
| 02 | 706080 |
| 03 | 808185 |
| 04 | 504030 |
| 05 | 7687 |
| 06 | 4356 |
| 07 | 8994 |
-------------------------------------------
7 rows in set (0.00 sec)-- 3、指定排序的字段
-- 分数s_score已经完成了排序指定了降序上面的结果不指定则默认是降序
mysql select s_id, group_concat(distinct s_score order by s_score desc separator ) from Score group by s_id;
--------------------------------------------------------------------------
| s_id | group_concat(distinct s_score order by s_score desc separator ) |
--------------------------------------------------------------------------
| 01 | 969080 |
| 02 | 807060 |
| 03 | 858180 |
| 04 | 504030 |
| 05 | 8776 |
| 06 | 5643 |
| 07 | 9489 |
--------------------------------------------------------------------------
7 rows in set (0.00 sec)-- 4、去重操作
-- distinct s_score表示对分数去重取出每个学生的不同分数表中每个学生的分数都不相同结果同上
mysql select s_id, group_concat(distinct s_score order by s_score desc separator ) from Score group by s_id;
--------------------------------------------------------------------------
| s_id | group_concat(distinct s_score order by s_score desc separator ) |
--------------------------------------------------------------------------
| 01 | 969080 |
| 02 | 807060 |
| 03 | 858180 |
| 04 | 504030 |
| 05 | 8776 |
| 06 | 5643 |
| 07 | 9489 |
--------------------------------------------------------------------------
7 rows in set (0.00 sec)