You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server用户名排序不符预期,如何调整排序规则?

解决SQL Server与C#/其他数据库用户名排序不一致的问题

问题原因

你使用的SQL_Latin1_General_CP1_CI_AS属于SQL兼容排序规则,采用旧版排序逻辑,对.、_这类符号的权重定义和Unicode标准排序算法不同。而C# LINQ、PostgreSQL/MySQL默认遵循Unicode标准排序逻辑,因此出现排序结果差异。

你之前尝试的Latin1%CI%AI%类排序规则仅控制是否忽略重音(AI=重音不敏感),不影响符号的排序权重,因此无法解决问题。

解决方案

要让SQL Server的排序结果与C#/其他数据库一致,需改用基于Windows Unicode排序算法的规则,推荐使用Latin1_General_100_CI_AS(SQL Server 2008及以上支持的新版规则,更贴合Unicode标准)。

1. 临时查询指定排序规则

无需修改表结构,可在ORDER BY子句中临时指定规则:

SELECT [Username] FROM [dbo].[Test]
ORDER BY Username COLLATE Latin1_General_100_CI_AS;

2. 永久修改字段排序规则

如果希望该字段默认排序始终符合预期,可修改表字段的排序规则:

ALTER TABLE [dbo].[Test]
ALTER COLUMN [Username] NVARCHAR(256) COLLATE Latin1_General_100_CI_AS NOT NULL;

验证

执行上述操作后,test_test会排在test.test之前,与C# LINQ的排序结果完全一致。

内容的提问来源于stack exchange,提问作者Knalltuete5000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:50:49