在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%’