PostgreSQL将带逗号的字符串转换为整数

时间:2013-09-18 21:49:29

标签: postgresql

我想将具有逗号整数的“字符变化”类型的列转换为常规整数列。

我想支持从'1'到'10,000,000'的数字。

我尝试使用:to_number(fieldname,'999G999G999'),但只有在格​​式与字符串的确切长度匹配时才有效。

有没有办法支持从'1'到'10,000,000'?

4 个答案:

答案 0 :(得分:14)

select replace(fieldname,',','')::numeric ;

按照您最初尝试的方式进行,不建议:

select to_number( fieldname,
                  regexp_replace( replace(fieldname,',','G') , '[0-9]' ,'9','g')
                );

内部替换将逗号更改为G。外部替换将数字更改为9。这不会计入十进制或负数。

答案 1 :(得分:1)

您可以使用REPLACE()功能删除逗号:

CREATE TABLE Foo
(
  Test NUMERIC
);

insert into Foo VALUES (REPLACE('1,234,567', ',', '')::numeric);

select * from Foo; -- Will show 1234567

答案 2 :(得分:0)

您可以按照建议使用空字符串替换逗号,或者可以使用FM prefix的to_number,因此查询将如下所示:

SELECT to_number(my_column, 'FM99G999G999')

答案 3 :(得分:-1)

有些事情需要注意:

在表上使用函数 REPLACE(“fieldName”,“,','')时,如果使用TABLE进行VIEW,则该函数将无法正常工作。您必须删除视图才能使用它。