在sqlite中,REAL和NUMERIC数据类型看起来很相似.由于NUMERIC支持Decimal(10,5),何时应该使用REAL?
https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm
我正在使用sqlite3.
解决方法
与大多数其他RDBMS不同,sqlite使用动态类型系统.这意味着sqlite的五个存储类中的任何一个都可以存在于任何列中,尽管该列属于一种类型.但显然,在单个列中混合类型不是最佳实践.例如,在同一列中混合数字和字符数据是不好的做法,就像在任何数据库中一样. sqlite中的五个实际存储类是:
> NULL
> INTEGER
>真实
>文字
> BLOB
REAL存储类用于带小数组件的数字数据.浮子适合这个类别.其他没有小数组件的数字将分配给INTEGER存储类.
sqlite引入了一种称为“亲和力”的概念.引入它们是为了最大化sqlite与其他数据库之间的兼容性.从documentation开始,我们可以看到NUMERIC亲和关系与以下类型相关联:
> NUMERIC
> DECIMAL(10,5)
>布尔兰
>日期
> DATETIME
因此,如果您打算存储精确的DECIMAL(10,5)数据,那么NUMERIC亲和力将是有意义的.另一方面,亲和力REAL与浮点(不精确)十进制数据相关联.同样,您可以在任一列中存储任一类型,但从兼容性的角度来看,您可以遵循关联性规则.