溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

concat與group_concat函數(shù)使用流程

發(fā)布時(shí)間:2020-04-27 10:02:14 來源:億速云 閱讀:362 作者:三月 欄目:MySQL數(shù)據(jù)庫

本文主要給大家介紹concat與group_concat函數(shù)使用流程,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻(xiàn)可供大家參考,從現(xiàn)實(shí)意義角度出發(fā),億速云累計(jì)多年的實(shí)踐經(jīng)驗(yàn)可分享給大家。

1.concat()函數(shù)

使用方法:concat(str1,str2,…)
返回的結(jié)果為連接參數(shù)產(chǎn)生的字符串,如有任何一個(gè)參數(shù)為null,則返回值為null

注意:
如果所有參數(shù)均為非二進(jìn)制字符串,則結(jié)果為非二進(jìn)制字符串
如果自變量中含有任一二進(jìn)制字符串,則結(jié)果為二進(jìn)制字符串
一個(gè)數(shù)字參數(shù)被轉(zhuǎn)為與之相等的二進(jìn)制字符串格式,如要避免這種情況,可使用顯式類型cast

例如:

select concat(cast(int_col as char), char_col);

使用例子:
1.字段兩端加上’,’

concat與group_concat函數(shù)使用流程

mysql> select concat(',',name,',') from `user`;
+--------------------------+| concat(',',fdipzone,',') |
+--------------------------+| ,fdipzone,               |
+--------------------------+1 row in set (0.00 sec)


2.其中有一個(gè)參數(shù)為null

mysql> select concat(null,name) from `user`;
+-------------------+| concat(null,name) |
+-------------------+| NULL              |
+-------------------+1 row in set (0.00 sec)

2.concat_ws() 函數(shù)

使用方法:concat_ws(separator,str1,str2,…)

concat_ws()函數(shù)是concat()函數(shù)的特殊形式,第一個(gè)參數(shù)是其他參數(shù)的分隔符。分隔符的位置在要連接的兩個(gè)字符串之間。分隔符可以是一個(gè)字符串,也可以是其他參數(shù)。
如果分隔符為null,則結(jié)果為null。
函數(shù)會忽略任何分隔符參數(shù)后的null值,但concat_ws()不會忽略任何空字符串。

使用例子:
1.使用’,’分隔多個(gè)字段

mysql> select concat_ws(',',country_code,phone,region) from `user`;
+------------------------------------------+| concat_ws(',',country_code,phone,region) |
+------------------------------------------+| 86,13794830550,GZ                        |
+------------------------------------------+1 row in set (0.00 sec)


2.分隔符為null

mysql> select concat_ws(null,country_code,phone,region) from `user`;
+-------------------------------------------+| concat_ws(null,country_code,phone,region) |
+-------------------------------------------+| NULL                                      |
+-------------------------------------------+1 row in set (0.00 sec)


3.參數(shù)中有null與空字符串

mysql> select concat_ws(',',country_code,phone,null,region,'',grade) from `user`;
+--------------------------------------------------------+| concat_ws(',',country_code,phone,null,region,'',grade) |
+--------------------------------------------------------+| 86,13794830550,GZ,,200                                 |
+--------------------------------------------------------+1 row in set (0.00 sec)

3.group_concat()函數(shù)

使用方法:GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])

group_concat可以得到表達(dá)式結(jié)合體的連結(jié)值,使用distinct可以排除重復(fù)值。使用order by子句可以排序。
separator是一個(gè)字符串,用于分隔結(jié)果集中每個(gè)元素。默認(rèn)是逗號,可以通過指定separator “”完全移除這個(gè)分隔符。

使用例子:

表結(jié)構(gòu)

CREATE TABLE `article_in_category` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `article_id` int(11) unsigned NOT NULL, `category_id` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `article_id_INDEX` (`article_id`), KEY `category_id_INDEX` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入數(shù)據(jù):

INSERT INTO `article_in_category` (`id`, `article_id`, `category_id`) VALUES (NULL, '1', '1'),
(NULL, '1', '2'),(NULL, '1', '3'),(NULL, '2', '4'),(NULL, '2', '3'),(NULL, '2', '5'),(NULL, '3', '1'),
(NULL, '3', '5'),(NULL, '3', '6'),(NULL, '4', '8');
mysql> select * from `article_in_category`;
+----+------------+-------------+| id | article_id | category_id |
+----+------------+-------------+|  1 |          1 |           1 |
|  2 |          1 |           2 |
|  3 |          1 |           3 |
|  4 |          2 |           4 |
|  5 |          2 |           3 |
|  6 |          2 |           5 |
|  7 |          3 |           1 |
|  8 |          3 |           5 |
|  9 |          3 |           6 || 10 |          4 |           8 |
+----+------------+-------------+

獲取文章的id及所有分類id

mysql> select article_id,group_concat(category_id order by category_id asc) from `article_in_category` group by article_id;
+------------+----------------------------------------------------+| article_id | group_concat(category_id order by category_id asc) |
+------------+----------------------------------------------------+|          1 | 1,2,3                                              |
|          2 | 3,4,5                                              |
|          3 | 1,5,6                                              ||          4 | 8                                                  |
+------------+----------------------------------------------------+4 rows in set (0.00 sec)

注意:group_concat()函數(shù)對返回的結(jié)果有長度限制,默認(rèn)為1024字節(jié)

查看group_concat返回值最大長度

mysql> show global variables like '%group_concat_max_len%';
+----------------------+-------+| Variable_name        | Value |
+----------------------+-------+| group_concat_max_len | 1024  |
+----------------------+-------+

修改group_concat返回值最大長度

mysql> set global group_concat_max_len=2048;
Query OK, 0 rows affected (0.03 sec)mysql> show global variables like '%group_concat_max_len%';
+----------------------+-------+| Variable_name        | Value |
+----------------------+-------+| group_concat_max_len | 2048  |
+----------------------+-------+

以上就是關(guān)于mysql函數(shù)concat與group_concat使用說明事項(xiàng)的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI