2009-12-05 299 views
1

能像这样用select语句来完成:SQL SELECT语句的字符串连接

SELECT col1, concat(col2 + ' ') FROM .... 
     GROUP BY col1 

我知道我可以使用count(COL2)或SUM(COL2)为整数,但是是有串联如果一个函数类型是nvarchar还是nchar?

+1

是唯一的工作,而是取决于其RDBMS所使用。 – 2009-12-05 11:11:27

+0

忘了提及我正在使用Microsoft SQL Server 2008. – user182945 2009-12-05 11:15:36

回答

4

在SQL Server中,如果要跨行进行连接,则没有内置函数可以执行此操作。

我个人很喜欢using XML PATH,因为它似乎表现良好,但是这将在SQL Server 2005年起

SELECT 
    STUFF(
    (
    SELECT 
     ' ' + Description 
    FROM dbo.Brands 
    FOR XML PATH('') 
    ), 1, 1, '' 
) As concatenated_string 
+0

试过了,它工作,因为我需要我。 感谢您的帮助:)。 – user182945 2009-12-05 11:27:33

+0

没问题,乐意帮忙。根据查询,您可能需要使用连接将在STUFF函数内连接的结果集绑定到函数外部的字段,以限制结果集,从而限制结果集中的每个结果的串联字符串。 – 2009-12-05 11:37:21

1

+ operator用于连接T-SQL中的字符串。

编辑:

如果你希望在多行this might help聚集字符串。

+3

OP希望通过聚合功能来完成此操作。 – 2009-12-05 11:13:58

0

使用Sql Server没有内置聚合连接foncton,我知道MySql有一个叫做group_concat。

您需要使用Sql Server编写您自己的Scaler函数或CLR函数来实现此功能。

或者你可以使用游标来为你做这件事,用一个表var来返回结果。如果你喜欢,我可以提供一个例子。