ฉันจะแปลงสตริงเป็นความแม่นยำสองเท่าใน PostgreSQL ได้อย่างไร [ปิด]


19

ฉันจะแปลงสตริงเป็นความแม่นยำสองเท่าใน PostgreSQL ได้อย่างไร

ฉันลองทำสิ่งที่ชอบ:

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

โดยที่ละติจูดเป็นสตริงและละติจูด 2 เป็นสองเท่า ฉันไม่สามารถทำงานได้


6
" ไม่สามารถใช้งานได้ " ไม่ใช่ข้อความแสดงข้อผิดพลาดของ Postgres ที่ถูกต้อง กรุณาโพสต์ข้อผิดพลาดทั้งหมด (หรืออธิบายสิ่งที่ไม่ทำงาน)
a_horse_with_no_name

Eww นี่เป็นคำถามที่ไม่ดีจริงๆด้วยเหตุผลอื่นเพราะคุณกำลังถามเกี่ยวกับลองจิจูดและละติจูดและพวกเขาไม่ควรถูกจัดเก็บเป็นสองเท่าอย่างไรก็ตาม
Evan Carroll

คำตอบ:


42

double ไม่ใช่ประเภทข้อมูล postgres:

select cast('324342' as double);
ข้อผิดพลาด: พิมพ์ "double" ไม่มีอยู่
สาย 1: เลือกนักแสดง ('324342' เป็นสองเท่า)
                                ^

แต่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 <> ซอที่นี่


* หรือfloat(n)ที่ 25 <= n <= 53 เพราะนั่นถูกนำมาใช้เพื่อหมายถึงความแม่นยำสองเท่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.