GBase 8s
适配迁移
文章

decimal和money精度如何查询

发表于2023-10-25 15:30:3198次浏览1个评论

通常我们查询列的属性都会查询syscolumns这个系统表,但是发现,并没有decimal和money之类的数据类型的精度等信息,根据手册描述可知,collength存储的是列长,单位是字节Byte,而collength = (precision * 256) + scale如图所示,以decimal为例

可知2565 = 10*256+5

那么我们如何根据collength反推出来precision,scale呢,可使用如下公式

precision = collength >> 8,为向右逻辑位移8位,或者用collength/256取商,两种方式得出结果均为10
scale = scale & 255,此处为按位与,或者collength/256取余数,两种方式得出结果均为5

可以看出,按照上述公式计算出来的结果和我们创建出来的结果一致

评论

登录后才可以发表评论
用户头像
路路路发表于 9个月前
赞~