Форум русскоязычного сообщества Ubuntu


Автор Тема: Странный подход к сортировке SQL  (Прочитано 407 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Semtiko

  • Автор темы
  • Гость
Странный подход к сортировке SQL
« : 19 Апрель 2010, 14:49:19 »
Доброго времени суток.
Возможно я прогадал с разделом форума, но ничего более подходящего не нашел.

Работаю с SQLite.
В базе db есть колонка num(int) в которой есть такие строки:

72243
78271
73318
86710
8500

Отсылаю 'SELECT * FROM db ORDER BY num ASC'
выдаёт:

72243
73318
78271
8500
86710

То есть 8500 (наименьшая) выводится не первой, как должно быть.
Такое впечатление, что для него важны первые 2-3 символа.
Может это особенность SQLite?
Использую sqlite 2.8.17 встроенную в PHP 5.2.12.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Странный подход к сортировке SQL
« Ответ #1 : 19 Апрель 2010, 15:56:30 »
Это нормально.
Сортировка идет по 1 цифре, внутри по 2, внутри по 3 ...
А если еще точнее, то сортировка идет текстовая.
Если посмотрите, то так и получается.

Оффлайн yuryzh

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Странный подход к сортировке SQL
« Ответ #2 : 19 Апрель 2010, 15:57:48 »
Покажи структуру таблицы. Есть подозрение, что все-таки тип столбца описан как строка.  
Работаю с SQLite.
В базе db есть колонка num(int) в которой есть такие строки:
Отсылаю 'SELECT * FROM db ORDER BY num ASC'
выдаёт:

72243
73318
78271
8500
86710

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Странный подход к сортировке SQL
« Ответ #3 : 19 Апрель 2010, 16:00:31 »
А как же иначе. Так и есть, по другому быть не может. ;D

Semtiko

  • Автор темы
  • Гость
Re: Странный подход к сортировке SQL
« Ответ #4 : 19 Апрель 2010, 16:03:52 »
Я сошел с ума! =)
Решил проблему, зашел сюда и увидел такое же решение - и правда, оказалось, что при создании таблицы
я по ошибке вписал ей тип varchar а не int, то есть сортировка идёт в алфавитном порядке.

Всем спасибо!

Оффлайн yuryzh

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Странный подход к сортировке SQL
« Ответ #5 : 19 Апрель 2010, 16:08:35 »
Что значит не может?
CREATE TABLE t (num INTEGER)
INSERT INTO t VALUES ("72243");
INSERT INTO t VALUES ("78271");
INSERT INTO t VALUES ("86710");
INSERT INTO t VALUES ("186710");
INSERT INTO t VALUES ("8500");

select * from t order by num asc;

"8500"
"72243"
"78271"
"86710"
"186710"
« Последнее редактирование: 19 Апрель 2010, 16:24:26 от yuryzh »

Semtiko

  • Автор темы
  • Гость
Re: Странный подход к сортировке SQL
« Ответ #6 : 19 Апрель 2010, 16:22:58 »
Я думаю, что он имел ввиду, что не может быть, чтобы я не ошибся при создании таблицы,
раз сортировка себя так ведёт =)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Странный подход к сортировке SQL
« Ответ #7 : 19 Апрель 2010, 16:43:17 »
Вы все правильно поняли.

 

Страница сгенерирована за 0.078 секунд. Запросов: 24.