【发布时间】:2012-02-23 06:31:34
【问题描述】:
我想在我的 Informix 表中存储大整数值,例如 MySQL bigint。但是 Informix 没有数据类型 bigint。我必须改用什么数据类型?
【问题讨论】:
-
始终指定您使用的 Informix 版本以及您使用它的平台。
我想在我的 Informix 表中存储大整数值,例如 MySQL bigint。但是 Informix 没有数据类型 bigint。我必须改用什么数据类型?
【问题讨论】:
在所有平台(32 位和 64 位)上当前版本的 Informix Dynamic Server(即 IDS 版本 11.x)上,有一个数据类型 BIGINT,它是一个 8 字节整数(和一个匹配的 BIGSERIAL) .
对于歇斯底里的葡萄干1,还有第二对类型:INT8 和 SERIAL8。但是(这是歇斯底里的一点),它们在磁盘上占用 10 个字节而不是 8 个字节。我不推荐它们。任何给定的表都可以具有 BIGSERIAL 或 SERIAL8 列,但不能同时具有;你也可以有一个 SERIAL 列,但是为什么你需要更大的数字。 (也有序列用于生成按 1 以外的值递增的数字,但它们比 (BIG)SERIAL(8) 列更易于使用。)
如果您没有 BIGINT,则必须使用过时的 Informix 版本。
Informix 整数数据类型存在一个问题。有效值的范围是对称的。例如,SMALLINT 的有效范围是 ±32767。奇数球值(在 2 的补码机器上为 -32768,在符号幅度机器或 1 的补码机器上为 -0)保留用作 NULL。
1对于“歇斯底里的葡萄干”,请阅读“历史原因”。
【讨论】: