2

我一直在测试 sqlite3 类型的移动应用程序效率,但我的行为很奇怪。

我以这种方式创建了一个表:

create table numeric_t(int_4 INTEGER(4), int_8 INTEGER(8), real_4 REAL(4), real_8 REAL(8), new_real DOUBLE, int_1 INTEGER(1));

并且正在设置值并查看哪些行显示小数位数等等......

我是否错误地假设:
- INTEGER 列不应该能够存储带小数的数字?
- INTEGER(1)、INTEGER(4) 和 REAL(4) 应该不能存储和其他一样多的小数位?

谢谢

查看我的结果快照。

4

1 回答 1

5

在 SQLite 中,列类型不限制数据类型:

> CREATE TABLE t(i INTEGER);
> INSERT INTO T VALUES(1);
> INSERT INTO T VALUES(1.23);
> INSERT INTO T VALUES('forty-two');
> SELECT typeof(i) FROM t;
integer
real
text

引用文档

SQLite 使用更通用的动态类型系统。在 SQLite 中,值的数据类型与值本身相关联,而不是与其容器相关联。
[...]
任何列...可用于存储任何存储类的值。

于 2013-06-24T16:31:27.800 回答