如何在PostgreSQL中将字符串转换为双精度?[关闭]


19

如何在PostgreSQL中将字符串转换为双精度?

我尝试了类似的东西:

update points set latitude2 = cast(latitude as double) ;

其中latitude是一个字符串,而latitude2是一个double。我就是无法正常工作。


6
无法使其正常工作 ”不是有效的Postgres错误消息。请发布完整的错误(或描述什么完全不起作用)
a_horse_with_no_name 2011年

出于另一个原因,这是一个非常糟糕的问题,因为您要查询的是经度和纬度,而且无论如何都不应将它们存储为双精度数。
埃文·卡罗尔

Answers:


42

double 不是postgres数据类型:

select cast('324342' as double);
错误:类型“双”不存在
第1行:选择强制转换(“ 324342”为双精度);
                                ^

但是double precision

select cast('132342' as double precision);
| float8 |
| :----- |
| 132342 |

因此,请尝试:

update points set latitude2 = cast(latitude as double precision) ;

如果您愿意,可以改用float*,因为根据docs

未指定精度的float表示双精度

select cast('132342' as float);
| float8 |
| :----- |
| 132342 |

db <> 在这里拨弄


* float(n)25 <= n <= 53,因为这也意味着双精度

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.