J'ai créé une table dans PostgreSQL en utilisant ceci:
CREATE TEMP TABLE jsontesting
AS
SELECT id, jsondata::jsonb FROM ( VALUES
(1, '["abra","value","mango", "Apple", "sample"]'),
(2, '["japan","china","india", "russia", "australia"]'),
(3, '["must", "match"]'),
(4, '["abra","value","true", "Apple", "sample"]'),
(5, '["abra","false","mango", "Apple", "sample"]'),
(6, '["string","value","mango", "Apple", "sample"]'),
(7, '["must", "watch"]')
) AS t(id,jsondata);
Maintenant, ce que je voulais c'était
add Quelque chose comme append_to_json_array prend la jsondata réelle qui est un tableau json et la newString que je dois ajouter à ce tableau jsondata et cette fonction doit renvoyer le tableau json mis à jour.
UPDATE jsontesting
SET jsondata=append_to_json_array(jsondata, 'newString')
WHERE id = 7;
supprimer une valeur du tableau de données json, une fonction pour supprimer la valeur.
J'ai essayé de rechercher la documentation de PostgreSQL mais n'y ai rien trouvé.
Pour ajouter la valeur, utilisez l’opérateur d’ajout de tableau JSON (||
)
UPDATE jsontesting
SET jsondata = jsondata || '["newString"]'::jsonb
WHERE id = 7;
La suppression de la valeur ressemble à ceci
UPDATE jsontesting
SET jsondata = jsondata - "newString"
WHERE id = 7;
La concaténation d'un champ imbriqué ressemble à ceci
UPDATE jsontesting
SET jsondata = jsonb_set(
jsondata::jsonb,
array['nestedfield'],
(jsondata->'nestedfield')::jsonb || '["newString"]'::jsonb)
WHERE id = 7;
Pour ajouter à la réponse d'Evan Carroll, vous souhaiterez peut-être procéder comme suit pour définir la colonne sur un tableau vide s'il s'agit de NULL
. L'opérateur d'ajout (||
) ne fait rien si la colonne est actuellement NULL
.
UPDATE jsontesting SET jsondata = (
CASE
WHEN jsondata IS NULL THEN '[]'::JSONB
ELSE jsondata
END
) || '["newString"]'::JSONB WHERE id = 7;