Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将逗号后带3个数字的varchar强制转换为浮点型PostgreSQL_Postgresql - Fatal编程技术网

如何将逗号后带3个数字的varchar强制转换为浮点型PostgreSQL

如何将逗号后带3个数字的varchar强制转换为浮点型PostgreSQL,postgresql,Postgresql,我有一个varchar类型,其中每个值看起来像 539,000 153,300 55,300 752,500 4410,000 我需要用数字格式更改列类型 我尝试使用数字,但如果您的文本表示为德语十进制值,则该数字不起作用。逗号是十进制分隔符: 将逗号替换为点,并简单地转换为浮点数: SELECT replace('123,456', ',', '.')::float 如果逗号分隔了1000个组,则需要使用G格式化程序,该格式化程序描述了以下内容: FM抑制前导空格和零,所以更小的数字也可以

我有一个varchar类型,其中每个值看起来像

539,000
153,300
55,300
752,500
4410,000
我需要用数字格式更改列类型


我尝试使用数字,但如果您的文本表示为德语十进制值,则该数字不起作用。逗号是十进制分隔符:

将逗号替换为点,并简单地转换为浮点数:

SELECT replace('123,456', ',', '.')::float
如果逗号分隔了1000个组,则需要使用G格式化程序,该格式化程序描述了以下内容:

FM抑制前导空格和零,所以更小的数字也可以:

SELECT to_number('56', 'FM999G999')

如果文本表示法为德语十进制值,逗号为十进制分隔符:

将逗号替换为点,并简单地转换为浮点数:

SELECT replace('123,456', ',', '.')::float
如果逗号分隔了1000个组,则需要使用G格式化程序,该格式化程序描述了以下内容:

FM抑制前导空格和零,所以更小的数字也可以:

SELECT to_number('56', 'FM999G999')

确保设置了德语数字配置,并使用以下数字:


确保设置了德语数字配置,并使用以下数字:


你可以这样改变

使用replacemy_列“,”和“.”更改列my_列类型float::float


你可以这样改变

使用replacemy_列“,”和“.”更改列my_列类型float::float


我已经使用replaceprice,,,,,,,执行了这个查询alter table orders alter column price type float::float,但我的数字变成了这样的Ehm。。。逗号是千位分隔符还是德文十进制分隔符?@Viktor添加了第二个解决方案,如果逗号是千位分隔符而不是逗号分隔符,我执行了此查询alter table orders alter column price type float using replaceprice,“,”,”::float但我的数字变成了这样的Ehm。。。逗号是千位分隔符还是德国小数点分隔符?@Viktor添加了第二个解决方案,如果逗号是千位分隔符而不是逗号分隔符,请说明在显示的值中,逗号是德国小数点分隔符153300->153.3还是千位分隔符153300->153300请说明显示的值逗号是德国十进制分隔符153300->153.3或千位分隔符153300->153300