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

寻找Microsoft SQL Server中ASCII不区分大小写的排序规则

问题解答

核心结论

SQL Server中没有原生的、完全匹配你需求的排序规则——即严格按照ASCII值排序且大小写字符紧邻排列(如A后紧跟a)的不区分大小写规则。

原因说明

你期望的排序逻辑是按字符小写后的ASCII值排序,同时保留大小写字符的紧邻关系。而SQL Server现有排序规则的特性无法同时满足这两点:

  • 常规不区分大小写排序规则(如SQL_Latin1_General_CP1_CI_AS):这类规则会将大小写字符视为完全相等,排序时会把所有大写字符或小写字符集中排列,无法实现AaBbCc...的紧邻效果。
  • 二进制排序规则(如SQL_Latin1_General_CP850_BIN):这类规则严格按字符的二进制编码排序,但会区分大小写(A和a的ASCII值不同),不符合你不区分大小写的要求。

可行替代方案

1. 你当前使用的方法(推荐)

你实现的ORDER BY ASCII(LOWER(char_test))是最直接匹配需求的方式,逻辑清晰,在数据量不大时性能足够:

SELECT char_test
FROM code_page_test
ORDER BY ASCII(LOWER(char_test)) 

如果数据量较大,可通过添加计算列并建立索引优化排序性能:

-- 添加存储小写字符的计算列
ALTER TABLE code_page_test ADD lower_char_test AS LOWER(char_test);
-- 为计算列创建索引
CREATE INDEX idx_lower_char_test ON code_page_test(lower_char_test);
-- 基于计算列排序,提升查询效率
SELECT char_test
FROM code_page_test
ORDER BY lower_char_test;

2. 自定义排序规则(复杂方案)

若必须通过排序规则实现,可利用SQL Server 2017及以上版本的自定义排序规则功能,基于二进制排序规则修改权重映射,将大小写字符设为相同权重。但该步骤需熟悉排序规则的权重配置逻辑,操作复杂,仅适用于有特殊场景需求的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:43:14