存储列长度

collength 列值取决于列的数据类型。

基于整数的数据类型

BIGINT、BIGSERIAL、DATE、INTEGER、INT8、SERIAL、SERIAL8 或 SMALLINT 列的 collength 值与机器无关。 数据库服务器对 SQL 语言的这些基于整数的数据类型使用以下长度。
基于整数的数据类型 长度(以字节计)
SMALLINT 2
DATE、INTEGER 和 SERIAL 4
INT8 和 SERIAL8 10
BIGINT 和 BIGSERIAL 8

可变长度字符数据类型

对于 LVARCHAR 类型的 GBase 8s 列,collength 具有来自数据类型声明的 max 值或 2048(如果没有指定最大值)。

对于 VARCHAR 或 NVARCHAR 列,max_sizemin_space 值是使用以下某个公式编码在 collength 列中:
  • 如果 collength 值是正的:
    collength = (min_space * 256) + max_size
  • 如果 collength 值是负的:
    collength + 65536 = (min_space * 256) + max_size

时间数据类型

如前面所述,DATE 列在 collength 列中的值为 4

对于类型为 DATETIME 或 INTERVAL 的列,collength 是使用以下公式确定的:
(length * 256) + (first_qualifier * 16) + last_qualifier
长度是 DATETIME 或 INTERVAL 字段的实际长度,first_qualifierlast_qualifier 具有下表所显示的值。
字段限定符 字段限定符
YEAR 0 FRACTION(1) 11
MONTH 2 FRACTION(2) 12
DAY 4 FRACTION(3) 13
HOUR 6 FRACTION(4) 14
MINUTE 8 FRACTION(5) 15
SECOND 10    

例如:如果 DATETIME YEAR TO MINUTE 列长度为 12(例如:YYYY:DD:MO:HH:MIfirst_qualifier 值为 0(用于 YEAR),并且 last_qualifier 值为 8(用于 MINUTE),那么 collength 值为 3080(由 (256 * 12) + (0 * 16) + 8 计算所得)。

定点数据类型

MONEY 或 DECIMAL(p,s) 列的 collength 值可使用以下公式来计算:
(precision * 256) + scale

简单大对象数据类型

如果列的数据类型为 BYTE 或 TEXT,那么 collength 保存描述符的长度。