Merhaba,
Bu yazımızda son yılların popüler veri formatı olan JSON formatını OPENJSON komutunu kullanarak nasıl sorgulayacağımızdan basitçe bahsediyor olacağım.
Elimizde şu şekilde bir JSON verisi var.
{
"firstName": "Rack",
"lastName": "Jackon",
"gender": "man",
"age": 24,
"address": {
"streetAddress": "126",
"city": "San Jone",
"state": "CA",
"postalCode": "394221"
},
"phoneNumbers":
{ "type": "home", "number": "7383627627" }
}'
Bu Json’ı SQL Server ile aşağıdaki gibi sorgulayabiliriz.
DECLARE @JSON AS NVARCHAR(MAX)='{
"firstName": "Rack",
"lastName": "Jackon",
"gender": "man",
"age": 24,
"address": {
"streetAddress": "126",
"city": "San Jone",
"state": "CA",
"postalCode": "394221"
},
"phoneNumbers":
{ "type": "home", "number": "7383627627" }
}'
SELECT * FROM
OPENJSON ( @json )
WITH (
firstname varchar(100) '$.firstName' ,
lastName varchar(100) '$.lastName' ,
age int '$.age' ,
gender varchar(100) '$.gender' ,
streetAddress varchar(100) '$.address.streetAddress' ,
city varchar(100) '$.address.city' ,
postalCode varchar(100) '$.address.postalCode' ,
state varchar(100) '$.address.state' ,
address varchar(100) '$.address.streetAddress' ,
phoneNumbers varchar(100) '$.phoneNumbers.type'
)
Ve bu da elde ettiğimiz sonuç.

Şimdi veri sayısını biraz çoğaltalım.
DECLARE @JSON AS NVARCHAR(MAX)='
[
{
"firstName": "Rack",
"lastName": "Jackon",
"gender": "man",
"age": 24,
"address": {
"streetAddress": "126",
"city": "San Jone",
"state": "CA",
"postalCode": "394221"
},
"phoneNumbers":
{ "type": "home", "number": "7383627627" }
},
{
"firstName": "Marrie",
"lastName": "Coldman",
"gender": "woman",
"age": 39,
"address": {
"streetAddress": "156",
"city": "Newyork",
"state": "NY",
"postalCode": "10019"
},
"phoneNumbers":
{ "type": "home", "number": "555689998" }
}
]'
SELECT * FROM
OPENJSON ( @json )
WITH (
firstname varchar(100) '$.firstName' ,
lastName varchar(100) '$.lastName' ,
age int '$.age' ,
gender varchar(100) '$.gender' ,
streetAddress varchar(100) '$.address.streetAddress' ,
city varchar(100) '$.address.city' ,
postalCode varchar(100) '$.address.postalCode' ,
state varchar(100) '$.address.state' ,
address varchar(100) '$.address.streetAddress' ,
phoneNumbers varchar(100) '$.phoneNumbers.type'
)

İlerleyen zamanlarda konu ile alakalı daha detaylı yazılar gelecek inşallah.