MySQL CONCAT()与GROUP_CONCAT()的使用

 

1 . MySQL CONCAT(str1,str2, ...) 

--返回连接的字符串

mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL'); --若有一个为null,结果为null
        -> NULL
mysql> SELECT CONCAT(14.3);
        -> '14.3'
mysql> SELECT 'My' 'S' 'QL'; --相邻字符会相连接
-> 'MySQL'
 
2 . MySQL CONCAT_WS(separater,str1,str2, ...)

 

concat_wr()是用分隔符连接的特殊的concat(),第一个参数是分隔符,将其余的参数分隔。

  • mysql> SELECT CONCAT_WS('--','First name','Second name','Last Name');
            -> 'First name--Second name--Last Name'
    mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name'); --连接的遇到null,直接忽略 -> 'First name,Last Name'
    mysql> SELECT CONCAT_WS(NULL, 'First name',NULL,'Last Name'); --分隔符为null,结果为null 
    -> NULL

    CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.

 

 

MySQL GROUP_CONCAT()

 

1. MySQL GROUP_CONCAT()
mysql> SELECT pub_id,GROUP_CONCAT(cate_id)
-> FROM book_mast
-> GROUP BY pub_id;

 

返回结果:(默认逗号分隔) 

+--------+-----------------------+
| pub_id | GROUP_CONCAT(cate_id) |
+--------+-----------------------+
| P001 | CA002,CA004 |
| P002 | CA003,CA003 |
| P003 | CA001,CA003 |
| P004 | CA005,CA002 |
| P005 | CA001,CA004 |
| P006 | CA005,CA001 |
| P007 | CA005,CA002 |
| P008 | CA005,CA004 |
+--------+-----------------------+

2.MySQL GROUP_CONCAT() with order by and distinct
语句:(DISTINCT:消重,看结果的第四行CA003,只有一个。ASC:升序)
mysql> SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id) -> FROM book_mast -> GROUP BY pub_id -> ORDER BY GROUP_CONCAT(DISTINCT cate_id) ASC;


返回结果:
+--------+--------------------------------+
| pub_id | GROUP_CONCAT(DISTINCT cate_id) |
+--------+--------------------------------+
| P003 | CA001,CA003 |
| P005 | CA001,CA004 |
| P001 | CA002,CA004 |
| P002 | CA003 |
| P006 | CA005,CA001 |
| P004 | CA005,CA002 |
| P007 | CA005,CA002 |
| P008 | CA005,CA004 |
+--------+--------------------------------

3. MySQL GROUP_CONCAT() with separator
语句:
mysql> SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id
-> ORDER BY cate_id ASC SEPARATOR ' ') --去除逗号
-> FROM book_mast
-> GROUP BY pub_id ;

 


+--------+----------------
返回结果:
+--------+--------------------------------------------------------------------+
| pub_id | GROUP_CONCAT(DISTINCT cate_id ORDER BY cate_id ASC SEPARATOR ' ') |
+--------+--------------------------------------------------------------------+
| P001 | CA002 CA004 |
| P002 | CA003 |
| P003 | CA001 CA003 |
| P004 | CA002 CA005 |
| P005 | CA001 CA004 |
| P006 | CA001 CA005 |
| P007 | CA002 CA005 |
| P008 | CA004 CA005 |
+--------+--------------------------------------------------------------------+

 

 

参考文章:http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php#

               https://dev.mysql.com/doc/refman/5.7/en/string-functions.html

posted @ 2017-05-06 22:49  x.cube  阅读(1101)  评论(0编辑  收藏  举报