如何解决OPENJSON-如何从在SQL Server中另存为NVARCHAR的JSON对象中提取值
有RawData
类型的列NVARCHAR
,其中包含JSON对象作为字符串
RawData
-------------------------------------------------------
{"ID":1,--other key/value(s)--,"object":{--object1--}}
{"ID":2,"object":{--object2--}}
{"ID":3,"object":{--object3--}}
{"ID":4,"object":{--object4--}}
{"ID":5,"object":{--object5--}}
此JSON字符串很大(1kb),当前此json中最常用的部分是object
(200字节)。
我想使用OPENJSON
提取这些json字符串的对象部分。我无法实现解决方案,但我认为有解决方案。
我想要的结果是:
RawData
----------------
{--object1--}
{--object2--}
{--object3--}
{--object4--}
{--object5--}
到目前为止我的尝试
SELECT *
FROM OPENJSON((SELECT RawData From DATA_TB FOR JSON PATH))
解决方法
看起来像这样对您有用。
样本数据
obj.Add("connection.provider","Project.connection.AzureSQLDatabase");
解决方案
create table data_tb
(
RawData nvarchar(max)
);
insert into data_tb (RawData) values
('{"ID":1,"key": "value1","object":{ "name": "alfred" }}'),('{"ID":2,"key": "value2","object":{ "name": "bert" }}'),('{"ID":3,"key": "value3","object":{ "name": "cecil" }}'),('{"ID":4,"key": "value4","object":{ "name": "dominique" }}'),('{"ID":5,"key": "value5","object":{ "name": "elise" }}');
查看实际情况:fiddle。
,类似这样的东西
SELECT object
FROM DATA_TB as dt
CROSS APPLY
OPENJSON(dt.RawData) with (object nvarchar(max) as json);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。