返回首页

gbase数据、南大通用产品文档:GBase8sSMALLINT 数据类型

更新日期:2024年09月11日

SMALLINT 数据类型存储范围在 –32,767 到 32,767 的小整数。最大负数 –
32,768 是保留值,不能使用。
SMALLINT 值作为有符号二进制整数存储。
整数列通常存储计算和数量等等。由于 SMALLINT 数据类型的每个值只需要两个字
节,所以可以有效地执行算术运算。但是,与其他内置数字数据类型相比,SMALLINT 只
存储有限范围的值。如果数字在最小和最大 SMALLINT 值的范围之外,那么数据库服务器
不会存储该数据值,而是会发出错误消息。

DECIMAL 数据类型可采用两种格式:DECIMAL (p) 浮点和 DECIMAL (p,s) 定点。
在符合 ANSI 标准的数据库中,所有 DECIMAL 数字都是定点。
缺省情况下,数据库服务器将包括小数点 (.) 的文字数值解释为 DECIMAL 值。
DECIMAL(p) 浮点
DECIMAL 数据类型存储最多 32 个有效位的浮点十进制数字,其中 p 是总有效位数
(精度)。
可以选择指定精度。
如果未指定任何精度 (p),
那么将 DECIMAL 视为 DECIMAL(16)
(具
有 16 位精度的浮点十进制)。DECIMAL(p) 具有在 10
-130 与 10
124 之间的绝对指数范围。

如果在符合 ANSI 标准的数据库中声明 DECIMAL(p) 列,那么小数位的缺省值为
DECIMAL(p, 0) 意味着只能将整数值存储在此数据类型中。
在不符合 ANSI 标准的数据库中,
DECIMAL(p) 是一个数值范围大到足以存储值的指数
符号表示法的浮点数据类型。
例如:以下计算说明 DECIMAL(5) 列在缺省语言环境中需要多少存储字节(其中小数
点占据一个单独的字节): 数据值的符号为 1 字节
第一个数字为 1 字节
小数点为 1 字节
其余数字为 4 字节(精度 5 - 1)
e 符号为 1 字节

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 93 -

指数符号为 1 字节
指数为 3 字节
-------------------------------------------------
总共 12 个字节 因此,DECIMAL(5) 列中的“12345”在不符合 ANSI 标准的数据库内
显示为“12345.00000”(即,有六位小数)。
DECIMAL (p,s) 定点
在定点数字 DECIMAL(p,s) 中,不管数字值如何,小数点都固定在特定位置。当您指
定此类型的列时,就将其精度 (p) 声明为它可存储的总位数(从 1 到 32)。将其小数位
(s) 声明为小数部分的总位数(即,小数点右边的位数)。
绝对值小于 0.5 * 10
-s的所有数都具有值零。可存储而不会发生溢出错误的
DECIMAL(p,s) 数据类型的最大绝对值是 10
p-s -
10
-s。DECIMAL 列通常存储的是必须正确存
储和显示的带小数部分的数(例如,比率或百分率)。在符合 ANSI 标准的数据库中,所
有 DECIMAL 数的绝对值的范围必须在 10
-32 至 10
+31 内。
DECIMAL 存储器
数据库服务器使用一个字节的磁盘存储空间来存储两位十进制数,并加上一个字节来
存储指数和符号(第一个字节用 excess-65 格式表示一个符号位和 7 位指数)。余下的
字节将尾数表示为 base-100 位。小数点左边的有效位和小数点右边的有效位存储在独立
的字节组中。当使用最大精度规范时,DECIMAL(32,s) 数据类型可在小数点右边存储 s-1
个小数位数(如果 s 是奇数)。
在下面的示例中说明了数据库服务器存储小数的方式。如果指定 DECIMAL(6,3),那么
数据类型由整数部分中的三个有效位和小数部分中的三个有效位组成(例如:123.456)。
小数点左边的三位存储在 2 个字节上(其中一个字节只保存一位),小数点右边的三位存
储在另外 2 个字节上,如图 1所示。
(未显示指数字节。

由于指数和符号需要额外字节,
所以 DECIMAL(6,3) 总共需要 5
个字节的存储空间。 图 3. 说明 Decimal (p,s) 值中数位存储的示意图


可使用以下公式(下舍入为整数字节数)来计算 DECIMAL(p,s) 数据类型的字节存储
(N)(其中 N 包括存储指数和符号所需的字节):
如果小数位为奇数:N = (精度 + 4) / 2
如果小数位为偶数:N = (精度 + 3) / 2

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 94 -

例如,数据类型 DECIMAL(5,3) 需要 4 个字节的存储空间(9/2 下舍入等于 4)。
使用这些公式时要注意一点。数据库服务器用来存储小数值的最大字节数是 17。一个
字节用来存储指数和符号,其余的 16 个字节用来存储最多 32 位精度。但是,如果指定
精度 32 和奇数小数位,那么会丢失 1 位精度。例如,考虑数据类型 DECIMAL(32,31)。
将此小数定义为小数点左边 1 位,小数点右边 31 位。小数点左边的 1 位需要 1 个字节
的存储器。这使得只留下 15 个字节的存储器给小数点右边的位。15 个字节只能容纳 30
位,因此丢失 1 位精度。

case
24/case
5
NRG
tennis racquet