Heim >Datenbank >MySQL-Tutorial >Wie führt man arithmetische Operationen mit den JSONB- und Float-Typen von PostgreSQL korrekt durch?

Wie führt man arithmetische Operationen mit den JSONB- und Float-Typen von PostgreSQL korrekt durch?

Barbara Streisand
Barbara StreisandOriginal
2024-12-31 07:21:10616Durchsuche

How to Correctly Perform Arithmetic Operations with PostgreSQL's jsonb and Float Types?

Behebung des JSONB-zu-Float-Konvertierungsproblems von PostgreSQL

Beim Versuch, arithmetische Operationen mit dem JSONB-Typ von PostgreSQL und einem Float durchzuführen, können Benutzer auf Fehler stoßen zu Typinkompatibilität. Insbesondere die folgende Abfrage:

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

gibt den Fehler „Operator existiert nicht: jsonb numeric“ zurück. Selbst eine explizite Umwandlung mit der ::float-Syntax führt zu dem Fehler „Operator existiert nicht: jsonb double precision“.

Um dieses Problem zu beheben, können Benutzer die JSON-Operatorsyntax von PostgreSQL nutzen, um die erforderlichen Werte als zu extrahieren Text statt JSON. Das ->> Der Operator, der Text zurückgibt, kann wie folgt verwendet werden:

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

Durch die Verwendung des ->> Um den Breitengradwert als Text zu extrahieren, können Benutzer ihn dann in einen Gleitkommawert umwandeln und die gewünschte arithmetische Operation fehlerfrei ausführen. Diese Technik ermöglicht eine effiziente Handhabung von JSONB-Datentypen in PostgreSQL.

Das obige ist der detaillierte Inhalt vonWie führt man arithmetische Operationen mit den JSONB- und Float-Typen von PostgreSQL korrekt durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn