Mysql 的concat、concat_ws()以及group_concat()的用法與區別


一、concat()函數

1、mysql的Concat函數可以連接一個或多個字符串

select concat('10');//10

select concat('11','22','33');//112233

但是Oracle的concat函數只能連接兩個字符串,不能多也不能少

select concat('11','22') from dual;

2、mysql的Concat函數再連接字符串的時候,只要其中一個是null,南無返回就是null

select concat('11','22',null);//null

而Oracle的concat函數連接的時候,只要有一個字符串不是NULL,就不會返回NULL

select concat('11',NULL) from dual;//11

二、concat.ws()函數

表示concat with separator,即有分隔符的字符串連接

select concat_ws(',','11','22','33');//11,22,33

 

select concat_ws('|','11','22','33');//11|22|33

 

select concat_ws('*','11','22',NULL);//11*22

和concat不同的是, concat_ws函數在執行的時候,不會因為NULL值而返回NULL

三、group_concat()

*必須將group by按照什么東西排序,也打印出來;否則函數不起作用

可用來行轉列

group_concat([DISTINCT] 要連接的字段[Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

 

create table aa(

  id int,

  name VARCHAR(255)

 

);

 

insert  into aa values(1,10);

insert  into aa values(1,10);

insert  into aa values(1,20);

insert  into aa values(1,30);

insert  into aa values(3,30);

insert  into aa values(5,60);

insert  into aa values(5,90);

insert  into aa values(6,990);

 

1 以id分組,把name字段的值打印在一行,逗號分隔(默認)

 

select id,group_concat(name) from aa group by id;

 

2 以id分組,把name字段的值打印在一行,分號分隔

 

select id,group_concat(name separator ';') from aa group by id;

 

3 以id分組,把去冗余的name字段的值打印在一行,逗號分隔

 

select id,group_concat(distinct name separator ';') from aa group by id;

 

4 以id分組,把name字段的值打印在一行,*號分隔,以name排倒序

 

select id,group_concat(name order by name desc separator "*") from aa group by id

四、repeat()函數

用來復制字符串,如下’ab’表示要復制的字符串,2表示復制的份數

select repeat('ab',2);//abab

 

select repeat('a',2);//aa

 

---------------------

轉載自

作者:折戟沉沙_wx

來源:CSDN

原文:https://blog.csdn.net/vasilis_1/article/details/75305473


免責聲明!

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



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