如果它表示一个数字,SQLite 3会在INSERT上删除部分字符串

时间:2017-11-06 21:41:16

标签: sqlite

如果我尝试将数字作为字符串插入,则数字以" .0"结尾。 SQLite放弃了这一部分。

例如,如果我在sqlite3中调用此代码,我得到1作为答案,而不是1.0。

CREATE TABLE test (val STRING NOT NULL); INSERT INTO test (val) VALUES ('1.0'); SELECT * FROM test;

如果那时我在SQLiteman(一个可视化客户端)中打开数据库,它仍然是1。

它破坏了我的代码,所以现在我在写入数据库之前使用替换_但它是一个紧缩,我不能确定这种行为在将来不会破坏别的东西。

我可以以某种方式禁用此行为吗?为什么它以这种奇怪的方式工作?

我的sqlite3版本是3.20.1

1 个答案:

答案 0 :(得分:1)

STRING在SQLite中不是一个有意义的数据类型。您要找的是TEXT。请参阅Datatypes in SQLite Version 3

sqlite> CREATE TABLE test (val TEXT NOT NULL);
sqlite> INSERT INTO test (val) VALUES ('1.0');
sqlite> SELECT * FROM test;
1.0