postgresql PSQL中DECIMAL和NUMERIC数据类型的区别

2lpgd968  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(388)

decimalnumeric数据类型在PostgreSQL中的用途。根据参考文献,以下是对这些数据类型的解释。

Decimal,numeric --> It is a user specified precision, exact and range up to 131072 digits before the decimal point and up to 16383 digits after the decimal point.

字符串
上面的语句显示了decimalnumeric数据类型的描述。但是,我仍然不明白这些数据类型的确切用途是什么,以及在哪里使用它来代替其他数据类型。
用例子回答是非常赞赏.

vql8enpb

vql8enpb1#

直接从手册中:
类型decimalnumeric是等价的。这两种类型都是SQL标准的一部分。
至于“为什么我需要使用它”,这在手册中也有解释:
numeric类型可以存储具有非常大的位数的数字,并且精确地执行计算
(强调我的)。
如果你需要小数,使用decimal(或numeric)如果您需要不带小数的数字,使用integerbigintdecimal作为列类型的典型用途是“产品价格”列或“利率”。整数类型的典型用途是例如存储订购了多少产品的列(假设你不能订购“半个”产品)。
doublereal也是可以存储十进制值的类型,但它们是近似类型。这意味着您不一定要检索您存储的值。详细信息请参阅:http://floating-point-gui.de/

dsf9zpds

dsf9zpds2#

直接引用自https://www.postgresql.org/message-id/[email protected]
在Postgres中没有任何区别。有两个类型名称,因为SQL标准要求我们接受这两个名称。在标准中快速浏览一下,似乎唯一的区别是:

17)NUMERIC specifies the data type exact numeric, with the decimal
        precision and scale specified by the <precision> and <scale>.

     18)DECIMAL specifies the data type exact numeric, with the decimal
        scale specified by the <scale> and the implementation-defined
        decimal precision equal to or greater than the value of the
        specified <precision>.

字符串
也就是说,对于DECIMAL,它的实现允许小数点左边的数字多于要求的数字。Postgres没有这种自由,所以对我们来说这些类型之间没有区别。

regards, tom lane

q8l4jmvw

q8l4jmvw3#

它们是彼此的同义词,功能相同。SQL:2003标准说:

21) NUMERIC specifies the data type
    exact numeric, with the decimal
    precision and scale specified by the
    <precision> and <scale>.

22) DECIMAL specifies the data type
    exact numeric, with the decimal scale
    specified by the <scale> and the
    implementation-defined decimal
    precision equal to or greater than the
    value of the specified <precision>.

字符串

相关问题