У меня есть таблица со столбцом VARCHAR(255)
, которая содержит следующие строки.
1
2
5
22
text
Мне нужно нормализовать строки и отсортировать их вот так. Я добавляю к ним префикс 0
, чтобы при оформлении заказа я получал следующую информацию:
0001
0002
0005
0022
text
Вот запрос:
SELECT right(concat('000000000000000000000000000000000000', test), 36)
FROM my_table
ORDER BY right(concat('000000000000000000000000000000000000', test), 36);
Если number_of_chars
в right()
вызов достаточно мал (скажем, 16), порядок правильный, но если я использую 36, порядок неправильный: строка 5
предшествует 2
.
000000000000000000000000000000000005
000000000000000000000000000000000002
Вопрос: В чем причина такого поведения? Это ошибка? Как это исправить?
Вот как выглядит мой стол:
mysql> describe my_table;
+----------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+--------------+------+-----+---------+-------+
| id | varchar(255) | NO | PRI | NULL | |
| test | varchar(255) | NO | UNI | NULL | |
+----------------------------+--------------+------+-----+---------+-------+
Я использую MySQL 5.7.15