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 :
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;
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!