Bonjour.
Je cherche à extraire les données d'une colonne JSON dont le contenu ressemble à ceci :
Code json : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 { "persons": [ {"nom": "Doe", "prenom": "John", "dateNaissance": [1900, 1, 1], "..."}, {"nom": "Doe", "prenom": "Jane", "dateNaissance": [1900, 2, 1], "..."}, ], "...": [ "..." ] }
J'ai réussi à créer la requête select jsonb_path_query(colonne_json, '$.persons[*] ? (@.nom == "Doe")')->>'prenom' as Prenom from matable;.
Ça marche bien, mais mon ORM (Hibernate) ne comprends pas la requête.
Je passe donc par une fonction stockée à la place, mais le souci est que je ne sais pas comment rendre variable la partie "Doe", puisqu'elle est entourée de d'apostrophes.
J'aimerais donc remplacer la partie == "Doe" par quelque chose qui utilise le paramètre "nom".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE OR REPLACE FUNCTION public.recherche(nom VARCHAR) RETURNS VARCHAR LANGUAGE plpgsql AS $function$ DECLARE prenom VARCHAR; BEGIN SELECT jsonb_path_query(colonne_json, '$.persons[*] ? (@.nom == "Doe")')->>'prenom' INTO prenom FROM bdd.matable; RETURN prenom; END; $function$ ; SELECT public.recherche("Doe");
Partager