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

Oracle SQL实现不区分大小写排序且大写字母优先

Oracle SQL实现不区分大小写但大写优先的排序

要实现不区分大小写排序,但相同拼写的大写形式排在小写形式之前,需要分两级排序:先按不区分大小写的规则分组,再在组内按区分大小写的二进制规则排序,确保大写优先。

你当前使用的NLS_SORT=BINARY_AI会同时忽略大小写和重音,导致大小写形式的相同词汇被视为完全等价,无法区分顺序。

正确的查询语句

SELECT column_name
FROM your_table
ORDER BY 
    NLSSORT(column_name, 'NLS_SORT=BINARY_CI'), -- 第一级:不区分大小写分组排序
    NLSSORT(column_name, 'NLS_SORT=BINARY');   -- 第二级:区分大小写,大写优先

原理说明

  • BINARY_CI(Case-Insensitive):仅忽略大小写,将相同拼写的词汇归为同一组(例如"Apple"和"apple"会被分到同一组)。
  • BINARY:严格按照ASCII码排序,由于大写字母的ASCII值小于对应小写字母(如'A'=65,'a'=97),因此同一组内大写形式会排在小写形式之前。

验证示例

使用该语句后,你的示例数据会按期望顺序输出:

Apple
apple
Banana
banana
Bananb
Grape
orange
Pineapple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:58:38