0

根据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)。

4

0 回答 0