我使用此 MSDN 页面中的代码创建用户定义的聚合以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
结果似乎总是正确且如预期的那样,但我遇到了这个页面,指出订单不能保证,并且该属性SqlUserDefinedAggregateAttribute.IsInvariantToOrder
仅供将来使用。
所以我的问题是:假设字符串中的连接值可以以任何顺序结束是否正确?
如果是这种情况,那么为什么 MSDN 页面上的示例代码使用该IsInvariantToOrder
属性?