PostgreSQL – NUMERIC 数据类型
PostgreSQL 支持NUMERIC
类型来存储具有大量数字的数字。通常NUMERIC
类型用于需要精度的货币或金额存储。
Syntax: NUMERIC(precision, scale)
Where,
Precision: Total number of digits.
Scale: Number of digits in terms of a fraction.
NUMERIC
值最多可以有131、072位小数点前16位、小数点后383位。
允许具有零或正比例,如下面为具有零比例的 NUMERIC 列定义的语法:
Syntax: NUMERIC(precision)
如果同时消除精度和小数位数,则精度或小数位数没有限制,语法如下:
Syntax: NUMERIC
NUMERIC 和 DECIMAL 类型在 PostgreSQL 和 SQL 标准中是等效的。
如果不需要精度,建议不要使用 NUMERIC 类型,因为对 NUMERIC 值的计算比整数、浮点数和双精度慢。
示例 1:
使用以下命令创建一个名为 products 的新表:
CREATE TABLE IF NOT EXISTS products (
id serial PRIMARY KEY,
name VARCHAR NOT NULL,
price NUMERIC (5, 2)
);
现在插入一些产品的价格比例超过价格列中声明的比例:
INSERT INTO products (name, price)
VALUES
('Phone', 100.2157),
('Tablet', 300.2149);
由于价格列的小数位数为 2,PostgreSQL 将值 100.2157 向上舍入为 100.22,并将值 300.2149 向下舍入为 300.21
以下查询返回 products 表的所有行:
SELECT
*
FROM
products;
输出:
示例 2:
使用以下命令创建一个名为 products 的新表:
CREATE TABLE IF NOT EXISTS employee_salary(
id serial PRIMARY KEY,
name VARCHAR NOT NULL,
salary NUMERIC (10, 2)
);
现在插入一些产品的价格比例超过价格列中声明的比例:
INSERT INTO employee_salary(name, salary)
VALUES
('Raju', 57896.2277),
('Abhishek', 84561.3657),
('Nikhil', 55100.11957),
('Ravi', 49300.21425849);
由于价格列的小数位数为 2,PostgreSQL 将 Raju 的值 57896.2277 向上舍入为 57896.22,Abhishek 的值将值 84561.3657 向下舍入为 84561.36,Nisherk 的值将值 55100.11957 舍入为 55100 和 249.3012 的 249.3012 值到 249.3012。
以下查询返回 products 表的所有行:
SELECT
*
FROM
employee_salary;
输出: