2017-04-08 36 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

相關問題