如何解决如何将复杂的 JSON 字符串放入 SQL Server 列中
我已经将一些数据作为 JSON 字符串存储在表中,如下所示。
[
{
"firstName":"John","lastName":"Smith","age":25,"Address":{
"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":"10021"
},"PhoneNumbers":{
"home":"212 555-1234","fax":"646 555-4567"
}
},{
"firstName":"Mike","lastName":"Lee","age":30,"Address":{
"streetAddress":"10 Street","PhoneNumbers":{
"home":"212 555-3265","fax":""
}
}
]
要将这些数据导出到 excel 文件,我需要进行查询以获取如下详细信息
使用 CROSS APPLY OPENJSON 我可以获得姓名和年龄,但如何将地址和联系方式作为列获取?
解决方法
您需要使用 OPENJSON()
和相应的 path
:
JSON:
DECLARE @json nvarchar(max) = N'[
{
"firstName":"John","lastName":"Smith","age":25,"Address":{
"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":"10021"
},"PhoneNumbers":{
"home":"212 555-1234","fax":"646 555-4567"
}
},{
"firstName":"Mike","lastName":"Lee","age":30,"Address":{
"streetAddress":"10 Street","PhoneNumbers":{
"home":"212 555-3265","fax":""
}
}
]'
声明:
SELECT *
FROM OPENJSON(@json) WITH (
FirstName nvarchar(100) '$.firstName',LastName nvarchar(100) '$.lastName',Age int '$.age',Name nvarchar(100) '$.firstName',StreetAddress nvarchar(100) '$.Address.streetAddress',City nvarchar(100) '$.Address.city',State nvarchar(100) '$.Address.state',PostalCode nvarchar(100) '$.Address.postalCode',HomePhone nvarchar(100) '$.PhoneNumbers.home',Fax nvarchar(100) '$.PhoneNumbers.fax'
)
结果:
FirstName LastName Age Name StreetAddress City State PostalCode HomePhone Fax
John Smith 25 John 21 2nd Street New York NY 10021 212 555-1234 646 555-4567
Mike Lee 30 Mike 10 Street New York NY 10021 212 555-3265
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。