programing

Oracle에서 대/소문자 구분 안 함

powerit 2023. 8. 1. 20:50
반응형

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

언급URL : https://stackoverflow.com/questions/30844110/order-by-case-insensitive-in-oracle

반응형