MySQL中使用group_concat()指定分隔符


group_concat() 函數的作用是將group by產生的同一個分組中的值連接起來,返回一個字符串結果;

基本語法:group_concat( [distinct] 要連接的字段 [order by 排序字段 asc/desc  ] [separator '分隔符'] );

說明:可以使用distinct排除重復值;可以使用order by子句對結果中的值進行排序;

返回的字符串的默認分隔符從逗號(),若要改為其他分隔符,則使用SEPARATOR子句修改分隔符,如下語句:

``` select username,GROUP_CONCAT(`password` SEPARATOR '\r\n' ),GROUP_CONCAT(age SEPARATOR '|') FROM user_table WHERE username ='zhangsan' GROUP BY username ```

注意:

  mysql中group_concat函數處理字符串的長度是由限制的,默認長度為1024,如果拼接的字符串超過1024,就會在數據庫里面被截取,所以不會顯示所有拼接數據;

可以使用如下語句進行設置:

  設置當前session的group_concat長度,其他session連接不受影響:

SET SESSION group_concat_max_len = 102400;

設置全局group_concat長度:

SET GLOBAL group_concat_max_len = 102400;

group_concat加排序加分隔

``` select group_concat(CONCAT(bs.name, ':', bsa.jy) order by IFNULL(bd2.disp_order, 99),IFNULL(bgh2.disp_order, 99), IFNULL(bi.disp_order, 99) SEPARATOR '\t\r') from T_Item_Sickness tis INNER JOIN B_Sickness bs on bs.id = tis.sickness_id INNER JOIN B_Sickness_Advice bsa on bsa.sickness_id = tis.sickness_id left join B_Group_HD bgh2 on bgh2.id = tis.group_id left join B_Dept bd2 on bd2.id = bgh2.dept_id left join B_Item bi on bi.id = tis.item_id where tis.pa_id = '' and tis.group_id = '' ```


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM