我正在尝试使用SMO中的CollationInfo.Comparer来获取与SQL Server类似的c#代码。我得到了正确的整理,但我的项目仍然没有正确排序。
var collationInfo = CollationInfo.Collations.Single(x => x.Name == "SQL_Latin1_General_CP1_CS_AS") as CollationInfo;
var comparer = collationInfo.Comparer;
int c = comparer.Compare("Tri-Valley L", "Trimble L");
在这种情况下,c返回'1',表示Tri-Valley L将在Trimble之后。
但是SQL Server中的这段代码
DECLARE @T TABLE
(
Name VARCHAR(20)
)
INSERT INTO @T
(
Name
)
VALUES('Tri-Valley L'),
('Trimble L')
SELECT
Name
FROM
@T
ORDER BY Name
在Trimble之前返回Tri-Valley。
整理比较的东西是不能正常工作,还是我做错了什么?
答案 0 :(得分:0)
传统的“SQL”排序规则排序与Windows“word-sort”算法不一致。您需要对数据库中的列使用Windows排序规则(例如Latin1_General_CS_AS)来获得相同的行为。