mysql 和sqlserver的 多行合并成一行


mysql 和sqlserver的 多行合并成一行


mysql  多行合并:

mysql 内置函数 group_concat(exper  SEPARATOR " " )

exper:列明 

SEPARATOR " ": 行分隔符 ,这里表示的是使用空格分隔多行 


mysql> select * from tmp_02 ;

+------------+---------+

| Fclient    | ct      |

+------------+---------+

| 安卓       | 1858799 |

| IOS        |  522568 |

| 传奇客户端 |  472561 |

+------------+---------+

3 rows in set (0.00 sec)


多行合并 :

mysql> select convert(GROUP_CONCAT(concat(Fclient,‘:‘,ct) SEPARATOR "   ") using utf8)  tkey from tmp_02;

+-----------------------------------------------+

| tkey                                          |

+-----------------------------------------------+

| 安卓:1858799   IOS:522568   传奇客户端:472561 |

+-----------------------------------------------+

1 row in set (0.00 sec)


note:行分隔符可以是任意的字符 。


参考链接: http://blog.sina.com.cn/s/blog_4e808acf01009qna.html



在sqlserver中 ,2000以前的版本(包括2000)需要手动写函数实现多行合并一行的功能。

自2005之后(包括2005)内置了for xml path 的功能可以很轻松的实现多行合并一行的功能

例子:

select EventClass from  dbo.perfom


select( select CAST(EventClass as varchar)+‘;‘ 

from  dbo.perfom for xml path(‘‘)  ) as A

结果:


for xml  path的参考链接:

http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html


本文出自 “SQLServer MySQL” 博客,请务必保留此出处http://dwchaoyue.blog.51cto.com/2826417/1546125

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。