У меня есть ряд VARCHAR полей в базе данных MySQL, которые «пронумерованный»:MySQL order_by парциальное Integer в String,
+-----------+
| name |
+-----------+
| thing 1 |
| thing 2 |
| thing 3 |
| ... |
| thing 10 |
| thing 11 |
+-----------+
Я хочу заказать их, как указано выше. Тем не менее, простой ORDER_BY table.name
производит что-то вроде следующего:
thing 1
thing 10
thing 11
thing 2
thing 3
...
Это имеет некоторый смысл, так как MySQL обрабатывает все поле как String (VARCHAR). Тем не менее, я пробовал множество методов сортировки, включая CAST(name AS DECIMAL)
и name + 0
. Это будет только сортировать по десятичной части, игнорируя часть строки. Ни одна из них не работает, потому что мне нужно сортировать по name
сначала и затем сортировать по конечной десятичной системе.
Я пробовал ORDER_BY name, name + 0
, но ничего не работает. Как мне выполнить и ORDER_BY
, а затем ORDER_BY
внутри этого подмножества? (Я думаю, что это сработает).
положить 0 напротив 1, так что это данные 01, 02, 03 в данных. если это не вариант, разрывайте левое и правое на отдельные поля, если это не опция, подстройте левую и правую части в порядке, а затем сначала закажите левой частью, затем правую часть (отринув ее на int) – xQbert