Maison > base de données > tutoriel mysql > Comment convertir PostgreSQL JSONB en flotteur pour les opérations arithmétiques ?

Comment convertir PostgreSQL JSONB en flotteur pour les opérations arithmétiques ?

Linda Hamilton
Libérer: 2025-01-02 21:18:38
original
258 Les gens l'ont consulté

How to Cast PostgreSQL JSONB to Float for Arithmetic Operations?

Conversion du JSONB de PostgreSQL en flottant

Lorsque vous essayez d'effectuer des opérations arithmétiques sur une colonne de type JSONB PostgreSQL contenant des valeurs numériques, vous pouvez rencontrer des erreurs dues pour taper des incompatibilités. Cet article montre comment surmonter ce problème et réussir à convertir les valeurs JSONB en flottants.

La cause première des erreurs dans la requête fournie est la tentative d'ajout d'une valeur numérique (1.0) à une valeur JSONB, ce qui entraîne dans l'erreur "l'opérateur n'existe pas". Pour résoudre ce problème, vous pouvez utiliser le casting pour convertir la valeur JSONB en float avant d'effectuer l'opération.

Cependant, le simple fait de convertir la valeur JSONB en float peut ne pas suffire, car PostgreSQL propose deux options pour accéder aux valeurs JSON :

  • json_data->'position' : renvoie une valeur JSON, qui ne peut pas être directement convertie en un float.
  • json_data->>'position' : renvoie une valeur de texte, qui peut être convertie en float en utilisant ::float.

Dans votre cas spécifique, puisque vous savez que les valeurs lat sont toutes des nombres JSON, vous pouvez utiliser la requête suivante pour les convertir en flottants :

SELECT (json_data->>'position'->>'lat')::float + 1.0 AS lat
FROM updates
LIMIT 5;
Copier après la connexion

Cette requête révisée devrait réussir convertissez les valeurs lat JSONB en flottants, vous permettant d'effectuer les opérations souhaitées.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal