Konvertieren des JSONB-Typs von PostgreSQL in Float
Dieser Artikel befasst sich mit der Herausforderung, den JSONB-Typ von PostgreSQL in Float zu konvertieren. Die Schwierigkeit entsteht, wenn versucht wird, arithmetische Operationen an JSONB-Daten durchzuführen, was standardmäßig einen Fehler zurückgibt.
Erste Abfrage und Fehler
Eine erste Abfrage wird angezeigt:
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
Diese Abfrage löst einen Fehler aus, da der Operator nicht auf JSONB- und numerische Typen angewendet werden kann. Das Hinzufügen einer expliziten Umwandlung, wie unten gezeigt, führt zu einem weiteren Fehler:
SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
Die Fehlermeldung zeigt nun an, dass der Operator nicht zwischen JSONB und Double Precision verwendet werden kann.
JSON-Operatoren
Das Problem ergibt sich aus der Tatsache, dass die -> Der Operator gibt ein JSON-Objekt zurück, während ->-> gibt Text aus. Um den JSONB-Wert korrekt in Float umzuwandeln, muss ->-> Operator sollte verwendet werden.
Lösung
Die Lösung für dieses Problem besteht darin, das -> Operator mit ->->:
SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat FROM updates LIMIT 5
Diese geänderte Abfrage wandelt den JSONB-Wert jetzt korrekt in Float um und führt die Additionsoperation ohne Fehler aus.
Das obige ist der detaillierte Inhalt vonWie kann ich den JSONB von PostgreSQL für arithmetische Operationen korrekt in Float konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!