Làm cách nào tôi có thể chuyển đổi một chuỗi thành độ chính xác kép trong PostgreSQL? [đóng cửa]


19

Làm cách nào tôi có thể chuyển đổi một chuỗi thành độ chính xác kép trong PostgreSQL?

Tôi đã thử một cái gì đó như:

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

trong đó vĩ độ là một chuỗi và vĩ độ2 là gấp đôi. Tôi không thể làm cho nó hoạt động được.


6
" không thể làm cho nó hoạt động " không phải là một thông báo lỗi Postgres hợp lệ. Vui lòng gửi lỗi hoàn chỉnh (hoặc mô tả chính xác những gì không hoạt động)
a_horse_with_no_name

Đây là một câu hỏi thực sự tồi tệ vì một lý do khác bởi vì bạn đang hỏi về Kinh độ và Vĩ độ và dù sao chúng cũng không nên được lưu trữ dưới dạng gấp đôi.
Evan Carroll

Câu trả lời:


42

double không phải là kiểu dữ liệu postgres:

select cast('324342' as double);
LRI: loại "double" không tồn tại
LINE 1: chọn cast ('324342' là gấp đôi);
                                ^

nhưng double precisionlà:

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

Hãy thử

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

nếu bạn thích, bạn có thể sử dụng float* thay vào đó, vì theo các tài liệu :

float không có độ chính xác quy định được lấy có nghĩa là độ chính xác kép

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

db <> fiddle ở đây


* hoặc float(n)trong đó 25 <= n <= 53 vì điều đó cũng được hiểu là độ chính xác kép

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.