人大金仓数据库KingbaseES Numeric介绍(1)

56 阅读1分钟

关键字:

KingbaseES、SQL、数据类型、Numeric、人大金仓

Numeric类型及语法

Numeric类型是数据库系统中广泛存在的用于表示较大的、精确的数字的数据类型,他通过一定组织方式对极大数字进行准确存储。

Numeric类型语法

Numeric(precision,scale)

  • Precision为整个数据的长度
  • Scale为小数部分的长度
  • E.g. ,98.22 precision为4,scale为2

KES中的Numeric结构解析(SHORT)

为了达到使用需求,KES中的numeric在结构上分为三种short、long、NAN。

Numeric的结构如下

file

其中,

vl_len是经过encode的整个NumericData的长度

choice是union结构体,他可能是三种Numeric中的任意一种,对于任一类型,均有16位头部可供解释(long实际上有32位)

file

当union结构体为NumericShort类型时,其header按照如下方式组织:

0000 0000 0000 0000 (以下部分的说明中,idx按照从0-15,从左至右排列)

    1. 标志位 用于标识numeric类型 当为10时,该numeric为short

2 符号位 用于标识该short类numeric的符号,1为负,0为正

3-8 SCALE 表示numeric的scale值,即该numeric在小数点后有多少位需要display

9 weight符号位 表示numeric的weight的符号,1为负,0为正

10-15 weight 表示numeric的weight值,即该numeric在小数点前有多少位需要display

NumericDigit为存储有效数字的结构体 其为int16, 实际上,Numeric将传入的数字的有效部分的每一位单独处理,并存放在digit中,通过weight与scale对有效数字进行处理就可以得到数字的一般形式。

更多信息,参见help.kingbase.com.cn/v8/index.ht…