I'm trying to figure out how to insert and retrieve a NAN value from
an sqlite database. I'm on Mac OS X 10.5 which is using sqlite3 3.4.0.
Obviously, using the sqlite3 command line tool, this is what I get:
$ sqlite3 nantest.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> CREATE TABLE IF NOT EXISTS nantest (x double);
sqlite> INSERT INTO nantest VALUES(123.4);
sqlite> INSERT INTO nantest VALUES(NAN);
SQL error: no such column: NAN
Ok, so maybe it's my lack of knowledge of SQL syntax, but I really
want to do this from code, so on to a more relevant example.
Here's a sample of my code:
sqlite3* db;
sqlite3_open("nantest.db", &db);
sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS nantest (x double);",
0,0,0);
sqlite3_stmt* stmt;
char* nanChars = "INSERT INTO nantest VALUES(?);";
int rc = ::sqlite3_prepare(db, nanChars, -1, &stmt, 0);
rc = ::sqlite3_bind_double(stmt, 1, 123.4);
rc = ::sqlite3_step(stmt);
rc = ::sqlite3_reset(stmt);
rc = ::sqlite3_prepare(db, nanChars, -1, &stmt, 0);
rc = ::sqlite3_bind_double(stmt, 1, NAN);
rc = ::sqlite3_step(stmt);
rc = ::sqlite3_reset(stmt);
rc = ::sqlite3_prepare(db, "SELECT x FROM nantest;", -1, &stmt, 0);
while ((rc = ::sqlite3_step(stmt)) == SQLITE_ROW)
{
double x = ::sqlite3_column_double(stmt, 0);
printf("%5.5f %d\n", x, isnan(x));
}
sqlite3_close(db);
Binding NAN to a statement works fine. The inserts are successful.
But what I put in as NAN comes back out as 0.0.
Is there any way to insert a NAN and get a NAN back out of an sqlite
database?
Thanks,
Justin
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users