2012-06-25 3 views
0

У меня есть столбец в моей таблице, в котором хранится максимум 2 символа. Напр. В, АК, ГП т.д.Сортировка в запросе SQl

Предположим, что у меня есть две строки в этой таблице, имеющей один «К» и другие, имеющие «БА» в качестве значения.

Требование в моем проекте таково, что я должен получить максимальное значение из таблицы на основе no. символов в случае, если существует разница в длине. В этом случае максимальное значение будет 'BA' не 'K'.

Но когда я использую «заказ на колонке по алфавиту» с ROWNUM = 1 в моем запросе, «K» возвращается как RowNum 0-го значения.

Если у меня есть значения 'D', 'BA', 'АК', 'C' то выход должен быть 'BA', 'АК', 'C', 'D' Просто хочу знаете, есть ли способ, которым я могу выполнить свое требование?

+0

что делают вас означает 'rownum = 0'? Разве вы не имеете в виду 'rownum = 1'? –

+0

Извините, опечатка ошибки, это rownum = 1 – Anand

ответ

3

Простейший способ может быть:

ORDER BY length(<col_name>) desc 

UPDATE - если вам нужно заказать по значению также, вы можете сделать:

ORDER BY length(<col_name>) desc, <col_name> desc 
+0

, но, делая это, я не смогу сортировать одиночные/двойные значения символов. Напр. 1) 'F' и 'H' 2) 'DF' и 'HG' – Anand

+0

отредактировал мое объяснение немного, чтобы сделать его более понятным – Anand

+0

@anand, Обновлено мой ответ –

0

попробовать:

select * from (
    select row_number() over(order by length(col_name) desc, col_name desc) rn, col_name 
    from tab_name 
) where rn = 1 
Смежные вопросы