金仓数据库 KingbaseES SQL语言参考手册(3.1.1.2. 数值类型) 您所在的位置:网站首页 numeric最大长度 金仓数据库 KingbaseES SQL语言参考手册(3.1.1.2. 数值类型)

金仓数据库 KingbaseES SQL语言参考手册(3.1.1.2. 数值类型)

2023-09-14 23:46| 来源: 网络整理| 查看: 265

3.1.1.2. 数值类型

数值类型存储 正、负定点及浮点数、零、Infinity、-Infinity以及NaN。由2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。 DATATYPE-NUMERIC-TABLE 列出了所有可用类型。

数字类型常量的语法见 常量 。数字类型有一整套对应的数学操作符和函数。相关信息请参考 函数和操作符 。下面的几节详细描述这些类型。

3.1.1.2.1. 整数类型

存储有符号整数,即没有小数部分的数值。

KingbaseES整数类型包括 tinyint、smallint、integer(或int) 和 bigint 。具体细节参见图表。

3.1.1.2.1.1. TINYINT数据类型

语法:TINYINT

有符号整数,取值范围 -128 ~ +127

3.1.1.2.1.2. SMALLINT数据类型

语法:SMALLINT

有符号整数,取值范围 -32768 ~ +32767

3.1.1.2.1.3. INTEGER数据类型

语法:INTEGER

别名:INT

有符号整数,取值范围 -2147483648~ +2147483647

3.1.1.2.1.4. BIGINT数据类型

语法:BIGINT

有符号整数,取值范围 -9223372036854775808~ +9223372036854775807

3.1.1.2.2. 精确数值数据类型

3.1.1.2.2.1. NUMERIC 数据类型

语法:NUMERIC(precision, scale)

存储0 以及绝对值为[1.0 x 10-130, 1.0 x 10126)的正、负定点数。 在算术运算中,如果超出范围,KingbaseE报错。

precision表示精度,是整个数中有效位的总数,也就是小数点两边的位数。取值范围为 1~1000。 scale表示标度,是小数部分的数字位数,也就是小数点右边的部分。取值范围为0~1000。

使用该数据类型时,最好指定定点数的小数位数和精度,以便在输入时进行额外的完整性检查。 指定小数位数和精度不会强制所有值都达到固定长度。如果某个值超过精度,KingbaseES将返回错误。如果某个值超过标度,KingbaseES会对其进行四舍五入。

也可以使用NUMERIC(precision) 类型,即标度为0的定点数,即NUMERIC(precision, 0)

也可以直接使用NUMERIC类型,缺省精度和标度,指定KingbaseES数值的最大精度和标度。 考虑到移植性,在使用时最好是显式声明精度和标度。

3.1.1.2.2.2. DECIMAL 数据类型

语法:DECIMAL(precision, scale)

与NUMERIC 相同。

3.1.1.2.2.3. NUMBER 数据类型

与NUMERIC 相同。

说明:参数 ora_input_emptystr_isnull 被设置为 true 时可以使 NUMBER数据类型接受空串,默认值为false。除此之外,NUMBER 与 NUMERIC 是等效的。

3.1.1.2.3. 浮点类型

real 和 double precision 是近似数值类型,以近似的形式存储的,因此存储和检索一个值可能出现一些偏差。

3.1.1.2.3.1. REAL类型

语法:REAL

范围在 -1E+37 到 +1E+37 之间,精度至少是 6 位小数。

3.1.1.2.3.2. DOUBLE PRECISION类型

语法:DOUBLE PRECISION[(精度)]

范围在 -1E+37 到 +1E+37 之间,精度至少是15位小数。

为了与旧版本的 KingbaseES 生成的输出兼容,并允许降低输出精度,可以使用extra_float_digits 参数来选择rounded decimal 输出。

将值设置为 0 将恢复先前的默认舍入值为 6(对于 float4) 或 15(对于 float8) 的有效小数位数。 设置为负值会进一步减少位数;

3.1.1.2.3.3. FLOAT 类型

语法:FLOAT 或 FLOAT(p)

当p取值为1-24时,与REAL相同。当p取值为25-53时,与DOUBLE PRECISION相同。 没有指定精度时,与DOUBLE PRECISION相同。

注意:

以前,需要精确值的应用程序必须将 extra_float_digits 设置为3才能获得这些值。为了实现版本之间的最大兼容性,它们应该继续这样做。

除了普通的数字值之外,浮点类型还有几个特殊值:

Infinity

-Infinity

NaN

这些值分别表示 IEEE 754 特殊值“正无穷大”、“负无穷大”以及“不是一个数字”。 如果在 SQL命令里把这些数值当作常量写,你必须在它们周围放上单引号, 例如UPDATE table SET x = '-Infinity'。 在输入时,这些串是以大小写无关的方式识别的。

注意:

IEEE754指定NaN不应该与任何其他浮点值(包括NaN)相等。为了允许浮点值被排序或者在基于树的索引中使用,KingbaseES将NaN值视为相等,并且比所有非NaN值要更大。

3.1.1.2.4. 序数类型

smallserial、serial 和 bigserial类型不是真正的类型, 它们只是为了创建唯一标识符列而存在的方便符号(类似其它一些数据库中支持的 AUTO_INCREMENT 属性)。 这是 KingbaseES 特有的创建一个自增列的方法。

3.1.1.2.4.1. SMALLSERIAL类型

语法:SMALLSERIAL

相当于创建一个SMALLINT列。

3.1.1.2.4.2. SERIAL类型

语法:SERIAL

相当于创建一个INT列。

3.1.1.2.4.3. BIGSERIAL类型

语法:BIGSERIAL

相当于创建一个BIGINT列。

创建了一个整数列并且把它的缺省值设置为从一个序列发生器取值。限定NOT NULL约束以确保空值不会被插入 (也许是UNIQUE 或者 PRIMARY KEY 约束避免意外地插入重复的值,但这不会自动发生)。 最后,该序列被标记为“属于”该列,这样当列或表被删除时该序列也会被删除。 在不删除列的情况下也可以删除序列,但是这会强制删除该列的默认值表达式。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有