pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
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. 货币类型
| Name | Storage Size | Description | Range |
|---|---|---|---|
| money | 8 字节 | 货币额 | -92233720368547758.08 到 +92233720368547758.07 |
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。