2017-04-08 38 views
0

我使用sqlite作为我的应用程序的后端数据库,并存储在'真正'数据类型列的浮点值,但它也存储字符串值。 我知道数据可以在前端检查,但我想知道为什么sqlite不检查数据插入记录。Sqlite存储字符串值在数字或真正的数据类型

请检查金列它存储的价值。 enter image description here

回答

1

SQLite使用动态类型,即值的数据类型与值本身关联,而不是与其容器关联。它不强制数据类型约束。您可以将任何类型的数据存储在任何列中。在SQLite here中阅读关于此here和数据类型的更多信息。

sqlite.org

大多数SQL数据库引擎(每个SQL数据库引擎比其它的SQLite,因为据我们所知)摘录使用静态,僵化打字。使用静态类型,值的数据类型由其容器确定 - 存储值的特定列。

SQLite使用更通用的动态类型系统。在SQLite中,值的数据类型与值本身相关联,而不与其容器相关联。 SQLite的动态类型系统向后兼容其他数据库引擎的更常见的静态类型系统,因为在静态类型数据库上工作的SQL语句应该在SQLite中以相同的方式工作。但是,SQLite中的动态类型允许它执行传统的严格类型数据库中不可能的事情。

在你的情况, SQLite的尝试你通过即asasassas为双/浮点值的值转换,但由于它没有做到这一点,它已插入的值作为string。 SQLite的这个特性被称为type affinity

相关问题