历史版本。 PostgreSQL 8.4 已结束支持。 请参阅 当前版本手册.
8.2. 货币类型 #
money类型以固定的小数精度存储货币金额;参见表 8.3。小数精度由数据库的lc_monetary设置决定。输入支持多种格式,包括整数字面量和浮点数字面量,以及典型的货币格式,例如'$1,000.00'。输出通常也采用后一种形式,但会受到区域设置影响。未加引号的数值可以通过先把它转换为text再转换为money的方式转换成money,例如:
SELECT 1234::text::money;
反过来,即把money值转换为数值类型,则没有与区域设置无关的简单方法。如果知道货币符号和千位分隔符,可以使用regexp_replace():
SELECT regexp_replace('52093.89'::money::text, '[$,]', '', 'g')::numeric;
由于该数据类型的输出依赖区域设置,因此在
lc_monetary 设置不同的数据库之间装入
money 数据时,可能无法正常工作。为了避免这类问题,在将转储恢复到新数据库之前,应确保新数据库的
lc_monetary 设置与原数据库相同或等效。
表 8.3. 货币类型
| 名字 | 存储尺寸 | 描述 | 范围 |
|---|---|---|---|
| money | 8 字节 | 货币额 | -92233720368547758.08 到 +92233720368547758.07 |