关键字:
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的结构如下
其中,
vl_len是经过encode的整个NumericData的长度
choice是union结构体,他可能是三种Numeric中的任意一种,对于任一类型,均有16位头部可供解释(long实际上有32位)
当union结构体为NumericShort类型时,其header按照如下方式组织:
0000 0000 0000 0000 (以下部分的说明中,idx按照从0-15,从左至右排列)
-
- 标志位 用于标识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对有效数字进行处理就可以得到数字的一般形式。