Вот моя проблема. У меня есть таблица, такие как:MySQL Varchar Сортировка как Int
+-----------+--------+
| data | number |
+-----------+--------+
| Something | NULL |
| Test | 1 |
| Another | 5 |
| Testy | 22 |
| Tester | NULL |
| Test2 | 3 |
+-----------+--------+
Поле Number
имеет тип VARCHAR
, и мне нужно отсортировать по этому столбцу. Я не могу сделать одеяло CAST
, потому что мне нужно сохранить значения NULL
; Я не хочу превращать их в 0
.
Вот что я пытался до сих пор:
IF (number != NULL, CAST(number AS UNSIGNED), number) as int_number
+
ORDER BY int_number
Но это не работает, я предполагаю, потому что CAST
может только эффект колонки в целом, а не каждое значение на индивидуальной основе.
Я не могу преобразовать эту колонку в поле INT
по причинам, которые я не могу здесь объяснить.
Прошу протестировать любые ответы, которые вы придумали. Ответ, который я считаю правильным, не будет первым ответом, который я вижу, если он уже не был протестирован и не работает.
Sth like [ здесь] (http://sqlfiddle.com/#!9/df31f/7/0)? 'SELECT * FROM tab ORDER BY CAST (номер AS UNSIGNED)' – lad2025
Так что нуль будет отображаться перед всеми цифрами или после? –
@AbhikChakraborty Перед всеми номерами – lad2025