跳到主要内容

定点类型

定点类型为变长、精确数值类型,值域和精度取决于 Precision 和 Scale,以及是否为无符号。

DECIMAL 等价于 NUMERIC。语法如下:

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

M 是可以存储的总位数(Precision),D 是小数点后的位数(Scale)。小数点和负数符号 "-" 不计入 M。如果 D 为 0,则值没有小数点或小数部分。整数部分最大有效位数等于 M 减去 D 的值,即 Precision 减去 Scale 的值。所有带有 DECIMAL 列的基本计算(+、-、*、/)都使用 65 位的精度。

DECIMALM 最大值为 65,D 最大值为 30。如果省略 D,则默认为 0。如果省略 M,则默认为 10。

如果为数值列指定 ZEROFILL,seekdb 会自动向该列添加 UNSIGNED 属性。如果指定 UNSIGNED,则不允许为负值。

例如 DECIMAL(5,2),整数部分和小数部分最大有效位数分别为 3 和 2,所以值域为 [-999.99, 999.99]。如果同时定义为 UNSIGNED,则值域为 [0, 999.99]。

如下类型也是 DECIMAL 的同义词。其中,FIXED 可用于与其他数据库系统兼容。

DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]