Penukaran JSONB kepada Terapung dalam PostgreSQL 9.4
Seorang pengguna PostgreSQL cuba menukar lajur jsonb kepada terapung menggunakan pertanyaan berikut:
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
Walau bagaimanapun, mereka menemui ralat:
ERROR: operator does not exist: jsonb + numeric
Untuk menyelesaikan isu ini, pengguna mencuba penghantaran eksplisit menggunakan operator ::float, mengakibatkan ralat:
ERROR: operator does not exist: jsonb + double precesion
Untuk menukar nilai jsonb kepada terapung, ia adalah penting untuk mengikut keutamaan pengendali yang betul. -> operator mengembalikan nilai JSON, manakala ->> operator mengembalikan nilai teks. Untuk berjaya menghantar ke terapung, anda perlu menggunakan ->> operator.
Sintaks pertanyaan yang betul ialah:
SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
Dengan menggunakan ->> pengendali, nilai jsonb mula-mula ditukar kepada teks, yang kemudiannya boleh dihantar ke terapung menggunakan operator ::float.
Atas ialah kandungan terperinci Bagaimana untuk Menukar JSONB ke Terapung dengan betul dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!