SQL查询结果拼接

Sql查询结果进行拼接

对查询结果进行拼接,可使用group_concat(),concat(),concat_ws()函数。简单介绍下如何应用。

Mysql中的group_concat()

功能:可以group by产生的同一分组的值连接起来,返回一个字符串。
参数格式:

group_concat([distinct]要连接的字段 [order by 排序字段 asc/desc][separator '分隔符'])

distinct可排除重复值,order by对值进行排序,separator设置分隔符,缺省为逗号,适合多表查询,把对应表和这个表相关的组成一个组一条记录。

Sql server中的concat()

功能:将多个字符串连接成一个字符串
这里注意:并且每个字符串不能为空,否则返回null
参数格式:

concat(str1,separator,str2,....) 用分隔符拼接,多个字段需写多个分隔符

或者

concat(str1,str2,....) 直接拼接

Mysql中concat_ws()

功能和concat()一样,但可以一次性指定分隔符
参数格式:

concat_ws(separator,str1,str2,.....) 

separator指定分隔符,注意分隔符不能为null,如果为null,则返回结果为null
举例:
userinfo数据表如下:
SQL查询结果拼接_第1张图片
testgroup数据表如下:
SQL查询结果拼接_第2张图片
将userinfo数据表中phone和area字段用’-'进行拼接
SQL server实现:

select concat(phone,'-',area) from userinfo

结果:
SQL查询结果拼接_第3张图片
Mysql实现:

select concat_ws('-',phone,area) from userinfo 

结果:
SQL查询结果拼接_第4张图片
将testgroup数据表中展示id的所有分数
Mysql实现:

select id,group_concat(distinct score SEPARATOR '~') as new from  testgroup
group by id     --Mysql成功,就是每个id为一行 在前台每行显示该id所有分数

结果:
在这里插入图片描述

select id,group_concat(distinct score ) as new from  testgroup
group by id  --默认分隔符为逗号

结果:
在这里插入图片描述

你可能感兴趣的:(SQL)