在oracle中不区分大小写的顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle中不区分大小写的顺序相关的知识,希望对你有一定的参考价值。

我想按以下顺序对以下文本进行排序,但是,在尝试以下查询后,它不起作用。

值是“ A”,“ B”,“ Y”,“ Z”,“ a”,“ b”,“ y”,“ z”。

预期结果“ ZzYyBbAa”

SELECT COL FROM TABLE ORDER BY COL DESC;
SELECT COL FROM TABLE ORDER BY UPPER/LOWER(COL) DESC; Result-> ZzYybBaA
SELECT COL FROM TABLE ORDER BY NLS_UPPER/NLS_LOWER(COL) DESC; Result-> ZzYybBaA
答案

首先,您可以按列的大写(或小写)顺序进行排序,但是一旦完成,您就需要按文本本身进行排序,以获取首字母的顺序;例如:

with sample_data as (select 'A' txt from dual union all
                     select 'B' txt from dual union all
                     select 'Y' txt from dual union all
                     select 'Z' txt from dual union all
                     select 'a' txt from dual union all
                     select 'b' txt from dual union all
                     select 'y' txt from dual union all
                     select 'z' txt from dual)
select txt
from   sample_data
order by upper(txt) desc, txt;


TXT
---
Z  
z  
Y  
y  
B  
b  
A  
a  
另一答案

另一个选择是使用语言排序:

SELECT COL FROM TABLE ORDER BY NLSSORT(COL, 'NLS_SORT=GENERIC_M') DESC

输出

Z
z
Y
y
B
b
A
a

以上是关于在oracle中不区分大小写的顺序的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中模糊查询中不区分大小写怎么写?如:select × from table where number like‘%PK%’

Oracle查询语句区分大小写吗?

VBA代码在MS Access中不区分大小写的过滤器

grails中不区分大小写的搜索

Oracle中如何去除大小写区分的设置?!

在 QAbstractItemModel 中不区分大小写排序