Postgresql 货币类型:删除不带类型转换的货币符号

Postgresql 货币类型:删除不带类型转换的货币符号,postgresql,postgresql-9.4,Postgresql,Postgresql 9.4,我在Postgres表中使用货币类型作为货币数据。当我选择数据时,postgres根据系统的lc\u monetary设置格式化值 我想在不使用显式类型转换的情况下去掉查询结果中的货币符号(我目前正在使用Laravel的查询生成器。类型转换将需要原始查询) 有没有一种方法可以设置lc_monetary设置,使查询结果中的货币值的格式完全像简单的浮点数一样,精度为2位,并且没有千位分隔符(这样我就可以在PHP代码中将其用作字符串/浮点数)?与我交谈过的大多数人都建议不要使用money类型。通常,由

我在Postgres表中使用货币类型作为货币数据。当我选择数据时,postgres根据系统的
lc\u monetary
设置格式化值

我想在不使用显式类型转换的情况下去掉查询结果中的货币符号(我目前正在使用Laravel的查询生成器。类型转换将需要原始查询)


有没有一种方法可以设置lc_monetary设置,使查询结果中的货币值的格式完全像简单的浮点数一样,精度为2位,并且没有千位分隔符(这样我就可以在PHP代码中将其用作字符串/浮点数)?

与我交谈过的大多数人都建议不要使用money类型。通常,由于LC_货币格式,本地实现将货币类型作为字符串输出。大多数人(包括我自己)建议使用数字作为货币值

您还提到将您的货币价值置于浮动状态。计算机上的浮动自然会有舍入误差,并可能导致货币金额问题,因此要小心


在Python中,当我们需要对货币进行数学运算时,我们使用decimal类,我假设PHP也有类似的功能。

是select money\u column/1::money safe


根据文件,除以货币的结果是双精度的。。。。(货币抵消)

听起来你在寻找一个具有设定精度的数字/十进制:
numeric(precision)
numeric(precision,scale)
@Wolph嗯,我知道我可以更改类型。但是找到一个解决这个问题的方法是很有趣的。好吧,将
LC\u MONETARY
设置为nothing应该可以解决这个问题。但是如果你无论如何都不打算使用货币,那么使用
MONEY
类型又有什么意义呢?在这种情况下,它只是一个数值。@Wolph将此配置文件设置设置为nothing会使Postgres从操作系统继承它,而不会删除任何格式。在操作系统中将其设置为nothing是一件非常繁重的事情。顺便说一句,你的意思是,Postgres的货币类型仅用于输出格式?实际上,它比输出格式稍微多一些。在内部,
MONEY
类型实际上只是在内部存储为
bigint
,格式只是使用
LC\u MONETARY
设置添加的。然而,如果你有一个固定的精度无论如何,没有必要的麻烦,你可以设置它固定。