-->

实现C#和SQL使用Collat​​ionInfo.Comparer之间是一致的排序(Achievi

2019-06-26 10:16发布

我试图用Collat​​ionInfo.Comparer从SMO让我的C#代码进行排序如SQL Server。 我已经得到了正确的排序规则,但我的项目仍然不排序正确。

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表明三谷L将来的Trimble后返回“1”。

然而这段代码在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

返回前天宝三谷。

请问整理比较东西只是无法正常工作,还是我做错了什么?

Answer 1:

旧版“SQL”排序规则排序没有与Windows的“字排序”算法比对。 你需要使用Windows排序规则(如Latin1_General_CS_AS)的列在数据库中获得相同的行为。



文章来源: Achieving consistent sorting between c# and SQL using CollationInfo.Comparer