2013-08-12 74 views
1

array_to_string我不知道是否有中array_agg()配对和MySQLPostgreSQLarray_to_string(或任何接近这个功能至少)我没有任何运气我的研究试图找到类似的东西到这两个。对于非PostgreSQL用户,以下是它的工作原理。
通常情况下,执行:PostgreSQL的ARRAY_AGG(),并在MySQL

SELECT my_column FROM my_table; 

将导致到:

-------------- 
| my_column | 
|------------| 
| DATA1 | 
| DATA2 | 
| DATA3 | 
| DATA4 | 
-------------- 

在另一方面,执行语句:

SELECT array_agg(my_column) FROM my_table; 

将导致到:
单行与来自my_column的所有数据。

----------------------------------- 
|  array_agg(my_column)  | 
|---------------------------------| 
|{"DATA1","DATA2","DATA3","DATA4"}| 
----------------------------------- 

和array_to_string,作为函数名称说,它将数组转换为单个字符串。
转换的ARRAY_AGG(my_column)将返回如下:

------------------------- 
|      | 
|-----------------------| 
|DATA1,DATA2,DATA3,DATA4| 
------------------------- 

根据您的分隔符。就我而言,它是逗号。

* ** * ** * ** * ** * ** * ***编辑(液) ** * ** * ** * ** * ** * ** * *

溶液(IgorRomanchenko书面):

SELECT GROUP_CONCAT(my_column SEPARATOR ','); 
+3

你有没有尝试过'GROUP_CONCAT'字符串聚合? –

+2

至于array_to_string的问题 - MySQL没有内建的“Array”数据类型,所以要求类似的函数是毫无意义的。如果您只是想将多个奇异值与中间的分隔符连接起来,请查看CONCAT_WS。一般来说,查看函数概述以了解MySQL提供的功能以及您可以使用哪些数据类型以及哪些数据类型:http://dev.mysql.com/doc/refman/5.5/en/ func-op-summary-ref.html – CBroe

+1

只需注意,在PostgreSQL 9.0和更高版本中,可以使用string_agg函数来替代序列string_to_array(array_agg(..),',') - 它会更快一些。 –

回答

6

MySQL没有在数组类型bult,但你可以使用字符串聚集(如GROUP_CONCAT)汇聚多个值到一个字符串。

+0

如果分组字符串包含分隔符,则可能导致问题反序列化。 – Danon