關於mysql函數concat與group_concat使用說明事項

jacklove
發布: 2018-06-09 09:30:02
原創
2100 人瀏覽過

1.concat()函數

使用方法:concat(str1,str2,…)
傳回的結果為連接參數產生的字串,如有任何一個參數為null,則傳回值為null

注意:
如果所有參數均為非二進位字串,則結果為非二進位字串
如果自變數中含有任一二進位字串,則結果為二進位字串
一個數字參數被轉為與之相等的二進位字串格式,如要避免這種情況,可使用顯式類型cast

例如:

select concat(cast(int_col as char), char_col);
登入後複製

使用範例:
1.欄位兩端加上','

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


2.其中有一個參數為null

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

2.concat_ws() 函數

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

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

使用範例:
1.使用','分隔多個欄位

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.參數中有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()函數

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

group_concat可以得到表達式結合體的連結值,使用distinct可以排除重複值。使用order by子句可以排序。
separator是一個字串,用來分隔結果集中每個元素。預設是逗號,可以透過指定separator “”完全移除這個分隔符號。

使用範例:

表格結構

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;
登入後複製

#插入資料:

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()函數對傳回的結果有長度限制,預設為1024位元組

##查看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 | +----------------------+-------+
登入後複製
本文講解了mysql函數concat與group_concat使用說明,更多相關內容請關注php中文網。

相關推薦:

關於mysql innodb啟動失敗無法重新啟動的處理方法講解

講解php取得指定日期的相關內容

詳解PHP產生唯一RequestID類別


#

以上是關於mysql函數concat與group_concat使用說明事項的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!