2015-06-15 3 views
5

Я хочу заказать следующий текст в следующем порядке, но после выполнения следующего запроса он не работает.Порядок по регистру нечувствителен к оракулу

Значения на заказ: «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 

ответ

8

Прежде всего, вы можете заказать в верхнюю (или нижнюю) случае колонны, но как только вы сделали это, то вам необходимо отсортировать по сам текст, чтобы получить заказ на начальную букву; например:

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 
Смежные вопросы