參照微軟提供的例子:解析JSON在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')
當JSON數據有一個數組裏面,例如:
DECLARE @json NVARCHAR(MAX)
SET @json =
N'[
{ "id" : 2,"info": { "name": "John", "surname": "Smith" },
"Phones": ["123","345","678"] // like here
}
]'
有什麼辦法加入陣列解析後的數據得到的東西是這樣的:
Id First Name Last Name Phone
2 John Smith 123
2 John Smith 345
2 John Smith 678
偉大的解決方案,我被困在這個'Phones NVARCHAR(MAX)AS JSON',所以實現它像value子句 – TheGameiswar
@TheGameiswar:如果值的數量嚴格限制(和/或已知)明確地將它們從數組可能會比第二個'OPENJSON'快。但是我沒有經驗JSON解析的時間,所以現在不需要優化。 :-) –
是的,你是對的,只是看到執行計劃,原Json的成本爲0,json低於outer apply的成本爲20 – TheGameiswar