Numeric data types
Numeric data types are numbers stored in database columns. These data types are typically grouped by:
-
Exact numeric types, values where the precision and scale need to be preserved. The exact numeric types are
INTEGER
,BIGINT
,DECIMAL
,NUMERIC
,NUMBER
, andMONEY
. -
Approximate numeric types, values where the precision needs to be preserved and the scale can be floating. The approximate numeric types are
DOUBLE PRECISION
,FLOAT
, andREAL
.
Implicit casts from INTEGER
, FLOAT
, and NUMERIC
to VARCHAR
are not supported. If you need that functionality, write an explicit cast using one of the following forms:
CAST(numeric-expression AS data-type)
numeric-expression::data-type
For example, you can cast a float to an integer as follows:
=> SELECT(FLOAT '123.5')::INT;
?column?
----------
124
(1 row)
String-to-numeric data type conversions accept formats of quoted constants for scientific notation, binary scaling, hexadecimal, and combinations of numeric-type literals:
-
Scientific notation
:
=> SELECT FLOAT '1e10'; ?column? ------------- 10000000000 (1 row)
-
BINARY
scaling:
=> SELECT NUMERIC '1p10'; ?column? ---------- 1024 (1 row)
-
hexadecimal:
=> SELECT NUMERIC '0x0abc'; ?column? ---------- 2748 (1 row)