J'ai la fonction suivante dans PostgreSQL
CREATE OR REPLACE FUNCTION public.translatejson(JSONB, TEXT)
RETURNS TEXT
AS
$BODY$
SELECT ($1->$2)::TEXT
$BODY$
LANGUAGE sql STABLE;
Lorsque je l'exécute, je reçois les valeurs entourées de guillemets doubles. Par exemple:
SELECT id, translatejson("title", 'en-US') AS "tname" FROM types."FuelTypes";
en retour, je reçois une table comme celle-ci
-------------------
| id | tname |
-------------------
| 1 | "gasoline" |
| 2 | "diesel" |
-------------------
Les valeurs de la colonne 'title' sont au format JSON: {"en-US": "gasoline", "fr-FR": "essence"}. Comment puis-je omettre les guillemets doubles pour renvoyer uniquement la chaîne du résultat?
Le ->
L'opérateur renvoie un résultat json
. Le convertir en text
le laisse dans une représentation json.
Le ->>
L'opérateur renvoie un résultat text
. Utilisez-le à la place.
test=> SELECT '{"car": "going"}'::jsonb -> 'car';
?column?
----------
"going"
(1 row)
test=> SELECT '{"car": "going"}'::jsonb ->> 'car';
?column?
----------
going
(1 row)