соритровка чисел как текст

kibi

Новичок
сортировка чисел как текст

Есть база, в которую пишут юзеры данные в виде чисел:
1, 4, 01, 04, 11, 14 и т.д.
Поле, в котором храняться данные - char(2)
К сожалению менять структура базы и способ записи нельзя...

Select *
from table1
order by Field1

При сортировке по данному полю результаты показываются неправильно: 01, 10, 11 и т.д.

Можно ли средстави МуСКЛ как-то форматировать данные перед сортировкой...?

Пробовал так:

Select format(Filed1, 0) as Formatted
from table1
order by Formatted

нули убрались слева, но неправильный порядок сортировки не поменялся.
Варианты изменения типа поля базы или ручной конвертации базы не подходят. :-(

Спасибо.
 

kibi

Новичок
потому что не могу туда лезть - а получаю только такой формат
 

Фанат

oncle terrible
Команда форума
что значит - "не могу туда лезть"? Не можешь свой запрос послать? Тогда какой смысл вообще спрашивать?
 

ForJest

- свежая кровь
[sql]
SELECT IF (
LENGTH( a ) < 2, CONCAT( '0', a ) , a
) AS field
FROM a
ORDER BY `field` ASC
[/sql]
Только учти, что при подобном подходе индексы не могут быть использованы.
 

ForJest

- свежая кровь
Фанат
при каком форматировании SQL? Том что поддерживается форумом?

-~{}~ 06.08.05 22:18:

GoaMind
Хороший вариант. Но это сортировка текста как чисел. А автору нужно наоборот :)
 
Сверху