我似乎无法在 SQLite 或 apsw 中找到对以下行为的引用文档:
我有一个部分定义和填充的表:
CREATE TABLE GeoLoc (lat TEXT, lon TEXT);
INSERT INTO GeoLoc (lat, lon) VALUES ('-33.5533422', '151.23422');
当使用apsw时得到结果:
SELECT lat FROM GeoLoc;
我获得了 lat
列的正确 unicode
值类型。但是运行:
SELECT lat FROM GeoLoc WHERE lat + 0 = lat + 0;
我得到了 float
类型!上面的例子是一个愚蠢的例子,但在我的实际查询中,我正在使用 lat 进行一些计算,将其转换为浮点类型,但我不希望类型在任何地方都会改变在我的查询中。
我存储时依赖于lat
的准确值。当转换为 float 时,it could change when cast back to string (参见第 4.0 节)。
注意:我使用 Python 的 SQLite3 模块得到了相同的结果,但不是来自以及 SQLite3 自己的命令行客户端。
最佳答案
这是一个bug那是 introduced在 SQLite 版本 3.8.3 中。 现在fixed .
关于python - 列数据类型受其他地方使用的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598026/