#mysql
#mysql
Вопрос:
У меня есть таблица со столбцом varchar, который полностью заполнен числами. Когда я выполняю запрос с предложением ORDER BY , он сортируется буквенно-цифровым способом. Если я знаю, что все они числовые, но не могу изменить столбец на целочисленный тип, как я могу отсортировать численно?
insert into table1 values(field1) ('1'), ('10'), ('2);
select * from table1 order by field1;
Должен вернуть:
1, 2, 10
Комментарии:
1. Обратите внимание, что у вас синтаксическая ошибка:
('2);
=>('2');
Ответ №1:
Вы можете привести поле:
insert into table1 values(field1) ('1'), ('10'), ('2');
select * from table1 order by cast(field1 as signed integer);
Комментарии:
1. Я не думаю, что порядок при вставке даже упоминается в OP
2. @Cez. Вы правы. Пропустил a
;
. : o убрал нытье из моего поста.3. Также синтаксис неверен. Он должен читать «ПРИВЕДЕНИЕ (field1 КАК ЦЕЛОЕ ЧИСЛО БЕЗ ЗНАКА)» или «ПРИВЕДЕНИЕ (field1 КАК ЦЕЛОЕ ЧИСЛО СО ЗНАКОМ)»
4. @Cez. Снова правильно. 🙂 Думаю, мне пора спать. {o