首页 > 解决方案 > Postgres 中的长度和精度问题

问题描述

我正在使用 postgres sql 我需要 12 位数字,小数点后我只需要 6 位数字我应该在列中给出什么长度和精度。我应该给 cloumn 什么数据类型。

我尝试将数字作为数据类型,我给列的长度是 12,精度是 6。

标签: postgresqlddlsqldatatypes

解决方案


如果需要小数点12 位和小数点后 6 位,则需要numeric(18,6)

从手册中引用

数字的小数位数是小数部分中小数位数的计数,位于小数点右侧。数字的精度是整数中有效位数的总和,即小数点两边的位数

(强调我的)

所以类型定义中的第一个数字(精度)是位数。第二个是小数位数。

如果您指定numeric(12,6)总共12 位数字和 6 个小数位,那么小数点左侧的数字只剩下 6 位。为此你需要numeric(18,6)


推荐阅读