Сортировка результата запроса по столбцу строки, численно.

#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