Хранить значения NaN в базе данных SQLite

Я хотел бы вставить значения NaN в базу данных SQLite.

У меня есть таблица Ent с идентификатором, StringColumn и DoubleColumn (не обнуляемый), и я пытаюсь использовать следующий оператор SQL:

INSERT INTO Ent (Id, StringColumn, DoubleColumn) VALUES (1, 'NaN test', ????)

Я не знаю, что поставить вместо '????' для хранения NaN.

Я обращаюсь к базе данных с помощью System.Data.SQLite - может быть, это тоже имеет значение?


person Dariusz Wasacz    schedule 22.03.2013    source источник
comment
Вместо этого вы могли бы использовать NULL? Это послужит той же цели.   -  person SDC    schedule 22.03.2013


Ответы (4)


Я спросил ребят из SQLite, как решить эту проблему: .data.sqlite.org/index.html/tktview/e06c4caff3c433c80616ae5c6df63fc830825e59. Они добавили новый флаг подключения: «GetAllAsText», и теперь можно хранить NaN вместе с другими (Infinity, -Infinity).

person Dariusz Wasacz    schedule 20.06.2013

SQLite довольно... мягок... в отношении типов данных. Не стесняйтесь помещать «NaN» в столбец, определенный как «двойной». Или "бесконечность". Или "двойной", если уж на то пошло. SQLite не волнует.

person Dave Sherohman    schedule 27.03.2013

SQLite не имеет текстового представления значений NaN.

В SQL специальный NULL ведет себя аналогичным образом в вычислениях и может служить той же цели.

person CL.    schedule 22.03.2013
comment
Спасибо за подсказку. Я пытался использовать null в этом случае, но получаю сообщение об ошибке Abort из-за нарушения ограничения. Ent.DoubleColumn не может быть NULL. Единственный способ заставить его работать — изменить DoubleColumn на nullable. - person Dariusz Wasacz; 22.03.2013

Уловка, которую я сейчас использую, заключается в том, чтобы хранить -Infinity в столбцах Real, когда null недостаточно или не разрешен (поскольку у вас есть «не null» в этом столбце).

person Barton    schedule 27.03.2013