sql - Postgresql - 将数值更改为另一种格式
问题描述
我在en_US
语言环境中配置了一个数据库,但是我想做一个COPY
命令以数字格式保存NUMERIC
列。pt_BR
我可以仅更改活动会话的数字区域设置以获取正确格式的数字吗?
我得到什么(小数点分隔符上的点):
database=> SELECT value FROM myTable LIMIT 1;
value
--------
33.9
database=> show lc_numeric;
lc_numeric
------------
C
我的期望(小数点分隔符上的逗号):
database=> SELECT value FROM myTable LIMIT 1;
value
--------
33,9
有一种方法可以仅在会话中更改吗?
我可以手动格式化输出(以一种丑陋的方式)但是,我想在会话中自动执行此操作:
database=> SELECT replace(replace(replace(round(value::numeric, 2)::varchar, '.','_'),',','.'),'_',',') FROM myTable LIMIT 1;
value
--------
33,9
解决方案
是的,您可以使用SET
仅更改当前会话的参数,但它不会做您想要的。数据类型输出函数忽略lc_numeric
. 这是有意的。
您需要使用to_char
带国家小数分隔符的格式代码,请参阅文档。
SET lc_numeric = 'pt_BR';
SELECT to_char(value, '9999D9999')
FROM mytable
LIMIT 1;
推荐阅读
- python - Scrapy 提前完成,没有得到所有的链接
- c# - 在 Visual Studio 中重命名给定类的所有子类
- javascript - 如何在反向地理编码函数中更改 var 的值
- socrata - API 停止为 2019 年医疗个人景观工作
- java - Web 代理背后的 Spring Cloud 数据流
- intellij-idea - IDEA代码重复分析中的“单元”是什么意思?
- python - 在 docker 容器上运行时无法连接到烧瓶
- javascript - 使用tablesorter对两个相互依赖的表列进行排序
- c - 打印整数的位数
- grafana - 如何更改 Grafana 仪表板的数据源?