首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server 2014中是否有解析json的解决方案

SQL Server 2014中是否有解析json的解决方案
EN

Stack Overflow用户
提问于 2019-04-26 13:32:34
回答 1查看 1.6K关注 0票数 1

我正在尝试将sql Server 2014中存储的json格式的数据更改为如下所示的表:

代码语言:javascript
复制
Id  ImageId     FileNamePath
3    1          9/1/image1.png
3    1          9/1/image2.png  

我在sql server 2014中存储了以下JSON (TestImage)。

代码语言:javascript
复制
Id  ImagingId   TestImage
3   1           [{"Filename":"9/1/image1.png","OriginalName":"image1.png"}, 
                {"Filename":"9/1/image2.png","OriginalName":"image2.png"}]

我搜索了谷歌,也搜索了这个网站附带的stackoverflow,https://www.red-gate.com/simple-talk/sql/t-sql-programming/consuming-json-strings-in-sql-server/创建了parseJSON函数

代码语言:javascript
复制
DECLARE @jsonInfo NVARCHAR(MAX)
select @jsonInfo=TestImage from rptImagings
Select Id, ImageId,
   max(case when name='Text' then convert(Varchar(50),StringValue) else '' 
end) as [Text],
   max(case when name='Value' then convert(Varchar(50),StringValue) else 
'' end) as [Value],
   max(case when name='Default' then convert(bit,StringValue) else 0 end) 
as [Default]
From parseJSON
(
@jsonInfo
)
where ValueType = 'string' OR ValueType = 'boolean'
group by parent_ID

我希望输出结果如下所示

代码语言:javascript
复制
Id  ImageId     FileNamePath
3    1          9/1/image1.png
3    1          9/1/image2.png
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-27 00:06:21

这里有一个选项可以将JSON转换为XML。从那里开始是一个提取的小问题。

需要明确的是,这适用于您的样本数据,但我怀疑未来可能会出现问题。

示例

代码语言:javascript
复制
Declare @YourTable Table ([Id] varchar(50),[ImagingId] varchar(50),[TestImage] varchar(1500))  Insert Into @YourTable Values 
 (3,1,'[{"Filename":"AA/9293/9/1/image1.png","OriginalName":"image1.png"},{"Filename":"AA/9293/9/1/image1.png","OriginalName":"image2.png"}]')

 Select A.ID
       ,A.ImagingId 
       ,C.*
From  YourTable A
Cross Apply ( values(try_convert(xml,replace(replace(replace(replace(replace(replace([TestImage],'[',''),']',''), '":"', '="'),'{"', '<x '),'}','></x>' ), '","','" ')) )) B(XMLData)
Cross Apply (
                Select FileNamePath = xAttr.value('.','varchar(max)')
                 From  XMLData.nodes('//@Filename') xNode(xAttr)
            ) C

返回

代码语言:javascript
复制
ID  ImagingId   FileNamePath
3   1           AA/9293/9/1/image1.png
3   1           AA/9293/9/1/image1.png

更新dbFiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55861333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档