postgreSQLでのdecimal
およびnumeric
データ型の使用は何ですか。参考文献によると、以下はこれらのデータ型に与えられた説明です。
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.
上記のステートメントは、decimal
およびnumeric
データ型の説明を示しています。しかし、これらのデータ型の正確な使用方法と、他のデータ型の代わりに使用される場所についてはまだ理解していませんでした。
例と答えは大歓迎です...
タイプ
decimal
とnumeric
は同等です。どちらのタイプもSQL標準の一部です。
「なぜ使用する必要があるのか」に関しては、これもマニュアルで説明されています。
タイプnumericは、非常に多くの桁数の数値を格納でき、計算を正確に実行します
(エンファシス鉱山)。
小数点以下の数字が必要な場合は、decimal
(またはnumeric
)を使用します。小数点以下の数字が必要な場合は、integer
またはbigint
を使用します。列タイプとしてのdecimal
の一般的な使用法は、「製品価格」列または「金利」です。整数型の一般的な使用例は次のとおりです。 many製品の注文方法を格納する列(製品の「半分」を注文できないと仮定)。
double
およびreal
も10進数値を格納できるタイプですが、approximateタイプです。つまり、保存した値を必ずしも取得する必要はありません。詳細については、以下を参照してください。 http://floating-point-gui.de/
https://www.postgresql.org/message-id/[email protected] から直接引用
Postgresには違いはありません。 SQL標準では両方の名前を受け入れる必要があるため、2つのタイプ名があります。標準を簡単に見てみると、唯一の違いは次のとおりです。
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
それらは相互の同義語であり、機能的には同じです。 SQL:20 標準では次のように書かれています:
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>.