SQlite NUMERIC数据类型大小

时间:2013-06-24 15:45:25

标签: database types sqlite precision

我一直在测试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)不应该存储与其他小数位一样多的小数位?

由于

Check out this snapshot of my results.

1 个答案:

答案 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

引用documentation

  

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