重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
SQLSERVER 有 numeric ,为什么还要有 money 类型
[打印本页]
作者:
郑全
时间:
2026-3-24 16:24
标题:
SQLSERVER 有 numeric ,为什么还要有 money 类型
明明有 DECIMAL / NUMERIC 这种高精度数值类型,为什么还要专门设计一个 money 类型?
一句话结论
money 不是为了 “精度更高”,而是为了货币场景专用、自带格式、自带四舍五入规则、自带货币语义,在财务场景里比 numeric 更省事、更安全。
1. 最核心区别:语义不同
numeric / decimal:通用高精度数字,没有任何业务含义,可以存重量、长度、分数、科学计数。
money:专门存钱,数据库知道这是货币,会自动按货币规则处理。
2. money 自带固定小数位,不会乱
货币永远是 固定 2 位小数(不同数据库略有差异):
SQL Server:money = 10000 进制(小数点后 4 位)
PostgreSQL:money = 小数点后 2 位
好处:
不会出现 100.1234567 这种非法金额
不会因为小数位数混乱导致对账错误
而 numeric(19,4) 虽然也能做到,但需要你手动定义精度,一不小心就错。
3. money 自带货币格式化
直接查询就能输出:
$1,234.56
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2