Quelqu'un peut-il me dire pourquoi le premier exemple fonctionne, mais le second ne fonctionne pas? Pour moi, ils ressemblent, ils doivent correspondre à la même chose ...
DECLARE @prmInputData NVARCHAR(MAX) = '{ "a": { "b": 1, "c": 2 } }'
SELECT b, c, a
FROM OPENJSON(@prmInputData, '$')
WITH (
b INT '$.a.b',
c INT '$.a.c',
a NVARCHAR(MAX) '$.a' AS JSON
)
SELECT b, c, a
FROM OPENJSON(@prmInputData, '$.a')
WITH (
b INT '$.b',
c INT '$.c',
a NVARCHAR(MAX) '$' AS JSON
)
Le premier exemple retourne « a » comme objet JSON, correctement.
Le deuxième exemple renvoie "a" comme NULL, de manière incorrecte.
Je ne sais pas pourquoi!
Ah qui est intéressant, je vous remercie . Alors est-il possible de sélectionner plusieurs couches comme je le veux dans la même requête OPENJSON? – NightCabbage