Rumah > pangkalan data > tutorial mysql > Bagaimanakah saya boleh menukar jsonb PostgreSQL kepada Terapung untuk Operasi Aritmetik dengan betul?

Bagaimanakah saya boleh menukar jsonb PostgreSQL kepada Terapung untuk Operasi Aritmetik dengan betul?

Linda Hamilton
Lepaskan: 2024-12-30 17:51:11
asal
440 orang telah melayarinya

How Can I Correctly Convert PostgreSQL's jsonb to Float for Arithmetic Operations?

Menukar Jenis jsonb PostgreSQL kepada Terapung

Artikel ini menangani cabaran menukar jenis jsonb PostgreSQL kepada terapung. Kesukaran timbul apabila cuba melakukan operasi aritmetik pada data jsonb, yang secara lalai mengembalikan ralat.

Pertanyaan dan Ralat Awal

Pertanyaan awal dibentangkan:

SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
Salin selepas log masuk

Pertanyaan ini mencetuskan ralat kerana pengendali tidak boleh digunakan pada jenis jsonb dan angka. Menambah penghantaran eksplisit, seperti yang ditunjukkan di bawah, menghasilkan satu lagi ralat:

SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
Salin selepas log masuk

Mesej ralat kini menunjukkan bahawa pengendali tidak boleh digunakan antara jsonb dan ketepatan berganda.

Operator JSON

Isu ini berpunca daripada fakta bahawa -> operator mengembalikan objek JSON, manakala ->-> teks output. Untuk menghantar nilai jsonb terapung dengan betul, ->-> operator harus digunakan.

Penyelesaian

Penyelesaian kepada masalah ini ialah menggantikan -> operator dengan ->->:

SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat FROM updates LIMIT 5
Salin selepas log masuk

Pertanyaan yang diubah suai ini kini menghantar nilai jsonb dengan betul untuk terapung dan melaksanakan operasi penambahan tanpa ralat.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar jsonb PostgreSQL kepada Terapung untuk Operasi Aritmetik dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan