postgresql-将数值更改为其他格式

brc7rcf0  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(357)

我在中配置了一个数据库 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
k7fdbhmy

k7fdbhmy1#

是的,你可以用 SET 只为当前会话更改参数,但它不会执行所需操作。数据类型输出函数忽略 lc_numeric . 这是有意的。
你需要使用 to_char 关于国家十进制分隔符格式代码,请参阅文档。

SET lc_numeric = 'pt_BR';

SELECT to_char(value, '9999D9999')
FROM mytable
LIMIT 1;

相关问题