Im使用this MSDN page中的代碼創建一個用戶定義的聚合,以在SQL Server中連接字符串與group by's
。我的要求之一是連接值的順序與查詢中的順序相同。例如:保存SQL用戶定義的集合值順序?
Value Group
1 1
2 1
3 2
4 2
使用查詢
SELECT
dbo.Concat(tbl.Value) As Concat,
tbl.Group
FROM
(SELECT TOP 1000
tblTest.*
FROM
tblTest
ORDER BY
tblTest.Value) As tbl
GROUP BY
tbl.Group
會導致:
Concat Group
"1,2" 1
"3,4" 2
結果似乎總是正確的,具有符合市場預期,但比我碰到this page來,指出該訂單不能得到保證,並且該屬性SqlUserDefinedAggregateAttribute.IsInvariantToOrder
僅供將來使用。
所以我的問題是:是否正確假設字符串中的連接值可以以任何順序結束?
如果是這種情況,那麼爲什麼MSDN頁面上的示例代碼使用IsInvariantToOrder
屬性?
不能回答你的MS的問題,但'GROUP_CONCAT'讓你成爲確定性有關的連接。 –
@kerrek - 注意這個標籤爲'SQL Server'不是'MySQL' – JNK
恐怕SQL Server 2008中沒有'GROUP_CONCAT' – Magnus