赞
踩
首先我们对下面这三个函数做个简要说明。
CONCAT:对表中一行数据的多列进行整合拼接输出。
CONCAT_WS:对表中一行数据的多列进行整合拼接输出后进行字符串分割。
GROUP_CONCAT:对表中多行数据的某列进行整合拼接数据。
接下来用一个实例对大家进行具体讲解:
表结构:
我们新建了一张用户表,里面有一些常用字段。
接下来我们为表中添加一些数据:
1:首先我们用CONCAT函数将每一行数据的名字,年龄,address,email进行多列合并,代码如下:
select id, name, CONCAT(name,age,address,email) new_column from user
效果如下:
可以看到,我们将name,age,address,email四个字段进行拼接并用别名new_column进行展示。
到这里有多人会说,显示出来后的数据格式好难看啊,难道不能每个字段用特殊符号(例如-)进行分割吗?
答案是肯定的,接下来为大家带来一个CONCAT的进阶函数,CONCAT_WS,这个函数可以在拼接的同时进行字符串切割,表达式为CONCAT_WS(separator,str1,str2,...),它的第一个参数接收的为一个分割拼接字符串的分隔符,sql如下:
select id, name, CONCAT_WS('---',name,age,address,email) new_column from user
效果图如下:
以上我们介绍使用了CONCAT,CONCAT_WS,那么GROUP_CONCAT怎么使用呢?我们接着讲。
接下来我们需要对所有用户的姓名进行拼接,如何实现?看sql:
select GROUP_CONCAT(name) names, GROUP_CONCAT(age) ages from user
效果图如下:
GROUP_CONCAT函数默认会以“,”对拼接的字符串进行分割。
那么不想用“,”怎么办?这里很多同学就要说了,像CONCAT_WS函数一样嘛,第一个参数加想要的分隔符就好了,那让我们看下到底行不行?
select GROUP_CONCAT('---',name) names, GROUP_CONCAT('+++',age) ages from user
结果呢?
结果就有点差强人意了啊,直接在“,”的基础上做了二次分割,肯定是不达预期的,那么究竟如何做呢?看下面sql:
select GROUP_CONCAT(name separator '---') names, GROUP_CONCAT(age separator '+++') ages from user
正确结果显示:
现在我们已经做了列的拼接分割处理,那么如果我想将年龄一样的把他们名字拼接起来怎么做呢?看sql:
select GROUP_CONCAT(name separator '-') names, age from user group by age
结果展示:
那有人还要问了,只能拼一个字段吗?答案肯定是否定的,只需要在GROUP_CONCAT函数内部再加想要拼的字段就行,sql来:
select GROUP_CONCAT(name, age separator '-----') names, age from user group by age
效果图:
两个字段之间没有任何分隔符,看着很难受吧?我们直接在name和age中间直接添加分隔符就
行,sql与效果如下:
select GROUP_CONCAT(name, ',', age separator '-----') names, age from user group by age;
当然大家可以替换自己想要的分隔符。
好了,本期sql讲解到此结束,欢迎大家下期再来!(点赞加收藏,明天发大财)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。