Maison >base de données >tutoriel mysql >Comment puis-je convertir correctement le jsonb de PostgreSQL en Float pour les opérations arithmétiques ?
Conversion du type jsonb de PostgreSQL en Float
Cet article aborde le défi de la conversion du type jsonb de PostgreSQL en float. La difficulté survient lorsque l'on tente d'effectuer des opérations arithmétiques sur des données jsonb, qui renvoient par défaut une erreur.
Requête initiale et erreurs
Une requête initiale est présentée :
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
Cette requête déclenche une erreur car l'opérateur ne peut pas être appliqué aux types jsonb et numériques. L'ajout d'un casting explicite, comme indiqué ci-dessous, génère une autre erreur :
SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
Le message d'erreur indique désormais que l'opérateur ne peut pas être utilisé entre jsonb et double précision.
Opérateurs JSON
Le problème vient du fait que le -> L'opérateur renvoie un objet JSON, tandis que ->-> produit du texte. Afin de faire flotter correctement la valeur jsonb, le ->-> opérateur doit être utilisé.
Solution
La solution à ce problème est de remplacer le -> opérateur avec ->-> :
SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat FROM updates LIMIT 5
Cette requête modifiée convertit désormais correctement la valeur jsonb en float et effectue l'opération d'addition sans erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!