Сортировка текстового поля как числа и как строки одновременно?

244
18 июля 2018, 17:00

В GridView вывожу данные из таблицы.

Есть поле Номер - текстовый тип. Подскажите, пожалуйста, как сортировать это поле в БД MySql одновременно как число и строку.

К примеру:

1, 2, Поле, Номер, 10, 15

А получить после сортировки

1, 2, 10, 15, Номер, Поле
Answer 1

SELECT x FROM y ORDER BY CAST(z -1 AS UNSIGNED);

WHERE x - needed params, y - name of table z - sort column

Answer 2

Можно вот таким запросом

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

READ ALSO
Как парсить данные со всех страниц сайта?

Как парсить данные со всех страниц сайта?

Мой проект состоит в том чтобы указать на карте АЗС и цены на топливоПишу на laravel и google maps api3 и мне нужно узнать цены с других сайтов для этого...

205
SET и SELECT в одном запросе (PDO)

SET и SELECT в одном запросе (PDO)

Можно ли присвоить переменную и выполнить SELECT не разбивая запрос на подзапросы?

200
PDO возвращает SQLSTATE 00000

PDO возвращает SQLSTATE 00000

Не могу понять, почему pdo_mysql возвращает SQLSTATE 00000:

171
Бан при нажатии клавиш

Бан при нажатии клавиш

Как сделать чтобы по нажатии клавиш ctrl + u в пхп срабатывал код, который записывал вhtaccess айпи клиента, нажавшего эту кнопку?

231