在 PostgreSQL 中将双精度转换为文本时出现意外行为
Posted
技术标签:
【中文标题】在 PostgreSQL 中将双精度转换为文本时出现意外行为【英文标题】:Unexpected behavior when converting double precision to text in PostgreSQL 【发布时间】:2017-12-04 16:37:22 【问题描述】:今天遇到这种奇怪的行为..
select date_part('year', CURRENT_DATE);
2017
select to_char(date_part('year', CURRENT_DATE),'9999');
" 2017"
select length(to_char(date_part('year', CURRENT_DATE),'9999'));
5
我当然可以直接使用to_char(CURRENT_DATE,'YYYY')
,只是很好奇为什么双精度数字在转换为文本时会在开头有一个空格。 谢谢!
注意事项:
Data Type Formatting Functions (PostgreSQL 8.2.xx) 服务器版本:PostgreSQL 8.2.15(Greenplum 数据库 4.3.10.0)【问题讨论】:
【参考方案1】:此行为已记录在案(请参阅examples table)。它为负值的 -
符号留出了空间。
您似乎可以使用FM
前缀来避免这种情况,即'FM9999'
。
【讨论】:
啊,我第一次传球时没听懂。感谢您指出! @Kent 他们还写道:If no explicit provision is made for a sign in to_char()'s pattern, one column will be reserved for the sign, and it will be anchored to (appear just left of) the number. If S appears just left of some 9's, it will likewise be anchored to the number.
@krokodilko - 谢谢!我看到这是在最新的 v10 文档中,而在我的文档中却没有。解释的很好以上是关于在 PostgreSQL 中将双精度转换为文本时出现意外行为的主要内容,如果未能解决你的问题,请参考以下文章