2015-06-15 7 views
5

Desidero ordinare un testo seguente nel seguente ordine ma, dopo aver provato la seguente query, non funziona.Ordine per caso non sensibile in oracolo

i valori da ordinare sono "A", "B", "Y", "Z", "a", "b", "y", "z".

Risultato atteso "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 

risposta

8

Prima di tutto, si può ordinare dal SUPERIORE (o inferiore) caso della colonna, ma una volta che hai fatto, è quindi necessario ordinare dal testo stesso per ottenere l'ordine sulla lettera iniziale; es .:

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 
Problemi correlati