根据SQLite 文档,数字列可以存储最大为 8 个字节的整数。但是,一旦存储这些值,我就无法实际选择它们:
create table x (a integer, b integer, c integer);
insert into x values ('2147483647', '2147483647', '2147483647');
select * from x;
+------------+------------+------------+
| a | b | c |
+------------+------------+------------+
| 2147483647 | 2147483647 | 2147483647 |
+------------+------------+------------+
1 row in set
insert into x values ('2147483648', '2147483649', '2147483648');
select * from x;
什么都没有发生 - 没有行被返回
select count(1) from x;
+----------+
| count(1) |
+----------+
| 2 |
+----------+
1 row in set
select substr(a, 1, 5) from x;
+-----------------+
| substr(a, 1, 5) |
+-----------------+
| 21474 |
| 21474 |
+-----------------
如何在保留整数数据类型的同时正确检索实际值?(将其更改为 REAL 或 TEXT 可以按预期工作,但没有其他选择吗?)
编辑:我在上面的演示中使用了 Navicat,但在我的实际应用程序中也遇到了问题(使用node-sqlite3)。