Вот интересный, он происходит только с одним файлом базы данных, а не с любым другим, который у меня есть. Я вылечил эту проблему, но подумал, что это довольно интересно.
У меня есть таблица -
<partial table>
CREATE TABLE [horsestats] (
[horseID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[name] VARCHAR(30) NULL,
[flatrating] INTEGER DEFAULT '0' NULL
);
Все нулевые значения в таблице установлены по умолчанию, любые другие были установлены моим программным обеспечением. Около 70% записей имеет набор значений. Итак, если мы запустим это -
Select horsestats.flatrating FROM horsestats WHERE horsestats.flatrating<>0 ORDER BY horsestats.flatrating DESC LIMIT 20;
Мы на самом деле не ожидаем этого -
flatrating
0
0
0
etc
На самом деле перечислены только значения, равные 0, ни одно из значений, отличных от нуля, не выводится Если мы обратим его, мы можем ожидать, что в списке будут указаны только значения, отличные от 0:
Select horsestats.flatrating FROM horsestats WHERE horsestats.flatrating=0 ORDER BY horsestats.flatrating DESC LIMIT 20;
Но нет, записи не возвращаются.
Так что же нам дает этот (это место, где я начал, потому что это первый набор, который нужен моему программному обеспечению):
Select horsestats.flatrating FROM horsestats ORDER BY horsestats.flatrating DESC;
Могу поспорить, твои носки ты угадаешь неправильно. Он получает это:
flatrating
0
0
0
0
130
128
127
126
125
124
124
Как я уже сказал, этого не происходит ни с какой другой базой данных или таблицей, которые у меня есть. Я собираюсь исправить это сейчас, неявно устанавливая все значения от нуля до нуля, я подозреваю, что это исправит это.
На самом деле это не так, если я бегу:
UPDATE horsestats SET horsestats.flatrating='0' WHERE horsestats.flatrating='0';
Проблема остается, поэтому мне кажется, что я должен записать этот файл базы данных как поврежденный. В этом случае это нормально, потому что мне приходится загружать большинство данных из других источников в предзагрузке программного обеспечения.
Итак, вопрос Почему?
Может ли Sqlite сделать странную смесь анси и числовой сортировки? Это единственное, что я могу придумать, чтобы задать такой порядок сортировки, но также нулевое значение в этой таблице не кажется численно нулевым, хотя оно ведет себя, как и ожидалось, после его передачи в мое программное обеспечение.