我一直在测试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)不应该存储与其他小数位一样多的小数位?
由于
答案 0 :(得分: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中,值的数据类型与值本身相关联,而不是与其容器相关联 [...]
任何列......都可用于存储任何存储类的值。