我开始使用Linux Ubuntu开发一个Web系统,在某些时候我必须使用数据类型" money"
进行以下操作:explode(" ", "R$ 3,000.00"); // [0] => "R$" and [1] => "3,000.00"
然而,当我在Windows中安装软件时,我意识到数据没有空间保存,即" R $ 3,000.00" 。很快,代码片段无法正常运行。
注意:1可以"修复"这使用:
preg_replace("/[R$]+/", "$0 $1", "R$3,000.00"); // "R$ 3,000.00"
但肯定不是更好的方式。
注2:使用的PostgreSQL版本为9.5
有人会有任何解决此问题的建议吗?
非常感谢。
答案 0 :(得分:1)
您遇到的问题是lc_monetary
区域设置在两台计算机上的值不同。这就是两个不同操作系统上的“意外行为”。
您可以使用以下内容更改lc_monetary
区域设置:
set lc_monetary to 'SOME_LOCALE';
然后用以下方法测试:
test=# SELECT 34.888::money;
money
--------
$34.89
(1 row)
在https://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-LC-MONETARY
了解详情如果您的应用程序使用不同的操作系统,最好在连接开始时或在配置中正确设置区域设置。
在Mac / Linux上,您可以看到locale -a
的可用语言区域。我不确定Windows。
如果您通常不使用货币符号,则应明确考虑将该号码存储为decimal
。