sqlite: проблема выбора по реальным значениям - PullRequest
1 голос
/ 05 марта 2010

Я использую базу данных sqlite для хранения данных журнала.

В моей таблице много столбцов типа "настоящий".Когда я пытаюсь выполнить такие запросы, как:

SELECT * FROM log WHERE SomeNumber = 61;
SELECT * FROM log WHERE SomeNumber='61';

Ничего не вернется.

Запросы типа:

SELECT * FROM log WHERE SomeNumber < 10
SELECT * FROM log WHERE SomeNumber > 10

Вернут неправильные диапазоны.* Что-то не так с моим синтаксисом?

Спасибо,

Ответы [ 2 ]

1 голос
/ 07 марта 2010

Это действительно зависит от того, что вы положили в свой стол. Реальные числа почти всегда повсеместно хитры. «Реальное» значение 61 может быть сохранено как 61.0000000000001. Основная предпосылка: если вам нужно проверить на равенство, предпочтите целые числа.

Вы можете попробовать:

SELECT * FROM log WHERE SomeNumber = 61.0;

Это также может зависеть от того, с какой точностью вы ввели исходное значение.

NB. Следует отметить, что обычно целочисленное значение, например 61, сохраняется точно даже как действительное. Это просто упрощение.

0 голосов
/ 21 мая 2014

У меня точно такая же проблема при использовании действительного числа в запросе, и я ' решил ', используя следующий запрос

SELECT * FROM log WHERE SomeNumber = 61.7;

Становится

SELECT * FROM log WHERE SomeNumber between 61.7-0.00001 and 61.7+0.00001;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...