我想将具有带逗号的整数的“字符变化”类型的列转换为常规的整数列。
我想支持从“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/