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

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

我尝试使用:to_number(fieldname,'999G999G999'),但是它仅在格式与字符串的确切长度匹配时才起作用。

有没有一种方法可以支持从“1”到“10,000,000”?

最佳答案

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

按照您最初尝试的方式进行操作,不建议这样做:
select to_number( fieldname,
                  regexp_replace( replace(fieldname,',','G') , '[0-9]' ,'9','g')
                );

内部替换将逗号更改为G。外层替换将数字更改为9。这不考虑十进制或负数。

关于PostgreSQL将带逗号的字符串转换为整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18882942/

10-13 23:19