Postgresql to_number() 函数格式

Posted

技术标签:

【中文标题】Postgresql to_number() 函数格式【英文标题】:Postgresql to_number() function format 【发布时间】:2016-09-14 14:40:37 【问题描述】:

我想使用 postgresql to_number(numberString, format_mask)。我的 numberString 可能包含前导零(我不知道这些零的实际长度和 numberString 的总数)。我想修剪这些零并将值作为数字。

我已经阅读过这个函数here 并且目前使用的格式是:

select to_number('00005469', '9999999999')

但是如果 '9's 的长度小于 numberString 的长度,那么我就无法得到正确的数字。如何在 format_mask 中不写一长串“9”的情况下完成这项工作?

【问题讨论】:

【参考方案1】:

您不需要to_number()。只需将字符串转换为整数:

select '00005469'::integer;

或使用标准 SQL:

select cast('00005469' as integer);

【讨论】:

【参考方案2】:

如果您的列是否有小数,为了更安全,请使用

 select  NULLIF('00005469', '')::decimal

如果有小数,这个select '00005469'::integer; 将不起作用

【讨论】:

【参考方案3】:

这样使用很简单:

to_number(to_char(yournumber, '99'),'99')

【讨论】:

不鼓励仅使用代码的答案,因为它们没有说明如何解决问题。请更新您的答案,以解释这如何改进该问题已经接受和赞成的答案。请查看How do I write a good answer。

以上是关于Postgresql to_number() 函数格式的主要内容,如果未能解决你的问题,请参考以下文章

sql Oracle TO_NUMBER函数

AVG 中的 TO_NUMBER 函数不起作用

Oracle中to_number函数格式参数问题

to_number() 使用中遇到问题

oracle中to_number函数,使用了如何将字符串开头的0补省略?

to_number() 返回错误信息