Postgresql to_number() 函数格式

Postgresql to_number() function format

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

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

select to_number('00005469', '9999999999')

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

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

select '00005469'::integer;

或使用标准 SQL:

select cast('00005469' as integer);

这样使用很简单:

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

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

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

这个select '00005469'::integer;如果有小数就不行