В GridView вывожу данные из таблицы.
Есть поле Номер - текстовый тип. Подскажите, пожалуйста, как сортировать это поле в БД MySql одновременно как число и строку.
К примеру:
1, 2, Поле, Номер, 10, 15
А получить после сортировки
1, 2, 10, 15, Номер, Поле
SELECT x FROM y ORDER BY CAST(z -1 AS UNSIGNED);
WHERE x - needed params, y - name of table z - sort column
Можно вот таким запросом
select
f1
from t1
order by
if(cast(f1 + 0 as char) = f1, 0, 1),
f1 + 0,
f1
Пример на sqlfiddle
Выражение f1 + 0 вернет значение f1 если значение представимо числом или 0. Соответственно if(cast(f1 + 0 as char) = f1, 0, 1) вернет 0 для числовых значений и 1 для нечисловых. Отсортировав по такому выражению мы получим первыми числовые выражения, а потом нечисловые
Затем отсортируем по выражению f1 + 0. Это отсортирует группу числовых значений.
Ну и в конце сортируем оставшиеся строки по выражению f1
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости