En se référant à l'exemple fourni par Microsoft:Parsing JSON dans SQL Server
DECLARE @json NVARCHAR(MAX)
SET @json =
N'[
{ "id" : 2,"info": { "name": "John", "surname": "Smith" }, "age": 25 },
{ "id" : 5,"info": { "name": "Jane", "surname": "Smith" }, "dob": "2005-11-04T12:00:00" }
]'
SELECT *
FROM OPENJSON(@json)
WITH (id int 'strict $.id',
firstName nvarchar(50) '$.info.name', lastName nvarchar(50) '$.info.surname',
age int, dateOfBirth datetime2 '$.dob')
lorsque les données JSON a un tableau à l'intérieur, par exemple:
DECLARE @json NVARCHAR(MAX)
SET @json =
N'[
{ "id" : 2,"info": { "name": "John", "surname": "Smith" },
"Phones": ["123","345","678"] // like here
}
]'
Est-il possible de se joindre au tableau sur les données analysées pour obtenir quelque chose comme ceci:
Id First Name Last Name Phone
2 John Smith 123
2 John Smith 345
2 John Smith 678
grande solution, j'ai été bloqué à ce 'Phones NVARCHAR (MAX) AS JSON' donc mis en œuvre comme la clause de valeurs – TheGameiswar
@TheGameiswar: Si le nombre de valeurs est strictement limité (et/ou connu) les arracher explicitement de la tableau peut être plus rapide qu'un second 'OPENJSON'. Mais j'ai zéro expérience chronométrage JSON, donc pas besoin d'optimiser pour le moment. :-) –
oui vous avez raison, vu juste le plan d'exécution, l'original JSON a été évalué à 0, json ci-dessous l'application externe a été évalué à 20 – TheGameiswar