PostgreSQLで文字列を倍精度に変換するにはどうすればよいですか?[閉まっている]


19

PostgreSQLで文字列を倍精度に変換するにはどうすればよいですか?

私は次のようなものを試しました:

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

ここで、緯度は文字列で、緯度2はdoubleです。うまく動かせない。


6
「動作させることができません」は有効なPostgresエラーメッセージではありません。完全なエラーを投稿してください(または正確に機能していないものを説明してください)
a_horse_with_no_name

あなたは経度と緯度について尋ねているので、これはダブルスとして保存されるべきではないので、これは別の理由で本当に悪い質問です。
エヴァンキャロル

回答:


42

double postgresデータ型ではありません:

select cast('324342' as double);
エラー:タイプ「double」は存在しません
LINE 1:select cast( '324342' as double);
                                ^

しかしdouble precision

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

だから試してください:

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

必要に応じて、代わりにfloat*を使用できます。ドキュメントによる

精度が指定されていないfloatは、倍精度を意味するものとみなされます

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

db <> fiddle here


* またはfloat(n)25 <= n <= 53の場合、これも倍精度を意味すると解釈されるため

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.