Arborescences en R-JSON (->)

Exemple

Description

@startuml

hide circle

class Cours {

code : text {key}

titre : text {key}

nbpages : integer

}

class Auteur {

nom : text

prénom : text

}

class Adresse {

numéro : integer

rue : text

cp : integer

ville : text

}

Cours *- "1" Auteur : ""

Auteur *- "1" Adresse : ""

@enduml

Exemple

1
CREATE TABLE cours (
2
code TEXT PRIMARY KEY,
3
titre TEXT UNIQUE NOT NULL,
4
nbpages INTEGER NOT NULL,
5
auteur JSON NOT NULL
6
);
1
INSERT INTO cours (code, titre, nbpages, auteur)
2
VALUES (
3
'NF17',
4
'Bases de données',
5
98,
6
'{"nom":"Crozat","prenom":"Stéphane","adresse":{"num":18,"rue":"rue St Fiacre","cp":60200,"ville":"Compiègne"}}'
7
);
8
INSERT INTO cours (code, titre, nbpages, auteur)
9
VALUES (
10
'NF29',
11
'Ingénierie documentaire',
12
45,
13
'{"nom":"Crozat","prenom":"Stéphane","adresse":{"num":18,"rue":"rue St Fiacre","cp":60200,"ville":"Compiègne"}}'
14
);
1
INSERT INTO cours (code, titre, nbpages, auteur)
2
VALUES (
3
'NF29',
4
'Ingénierie documentaire',
5
45,
6
'{"nom":"Crozat","prenom":"Stéphane","adresse":{"num":4,"rue":"rue St Germain","cp":60300,"ville":"Senlis"}}'
7
);

SyntaxeParcourir un JSON (opérateur ->)

1
SELECT jsonatt->'key1'->>'key2' FROM t;

Renvoie la valeur associée à key2 qui se trouve dans key1.

Exemple

1
SELECT 
2
titre, 
3
auteur->>'nom' AS nom_auteur, 
4
auteur->>'prenom' AS prenom_auteur, 
5
auteur->'adresse'->>'ville' AS ville_auteur
6
FROM cours;
1
          titre          | nom_auteur | prenom_auteur | ville_auteur 
2
-------------------------+------------+---------------+--------------
3
 Bases de données        | Crozat     | Stéphane      | Compiègne
4
 Ingénierie documentaire | Crozat     | Stéphane      | Senlis

Attention

  • -> Est un opérateur de parcours intermédiaire, qui renvoie du JSON

  • ->> Est un opérateur final qui renvoie une valeur.

ComplémentOpérateurs

json Operators