2013-06-24 83 views
2

我一直在测试sqlite3类型的移动应用程序的效率,但我收到奇怪的行为。SQlite NUMERIC数据类型大小

我创建了一个表是这样的:

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)); 

和AM设定值和seing该行显示有多少小数等等...

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

由于

Check out this snapshot of my results.

回答

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 

引述documentation

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

+0

因此,当写入/读取时,创建sqlite表时,INTEGER(1)或INTEGER(10)将具有相同的内存占用空间和性能? – glesage

+0

是的。空间和性能取决于实际值。 –

+0

好吧,非常感谢,我会发布另一个问题关闭此更多(: – glesage