В 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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мой проект состоит в том чтобы указать на карте АЗС и цены на топливоПишу на laravel и google maps api3 и мне нужно узнать цены с других сайтов для этого...
Можно ли присвоить переменную и выполнить SELECT не разбивая запрос на подзапросы?
Как сделать чтобы по нажатии клавиш ctrl + u в пхп срабатывал код, который записывал вhtaccess айпи клиента, нажавшего эту кнопку?