2009-12-05 301 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來返回結果。如果你喜歡,我可以提供一個例子。