首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的JSON解析

SQL中的JSON解析
EN

Stack Overflow用户
提问于 2019-09-24 03:32:07
回答 1查看 47关注 0票数 1

我正在尝试以表格形式解析sql server中的JSON数组,下面是数据字符串

代码语言:javascript
复制
CREATE TABLE #JSONData
(
[gca] NVARCHAR(MAX)
,[User] INT
);
INSERT INTO #JSONData
VALUES ('
{"items":[{"i":"image1",
                 "url":"url-1",
                 "name":"Product 1",
                 "quantity":"1",
                 "sku":"112233",
                 "subtotal":"$24.99"},
                 {"i":image3",
                 "url":"url-3",
                 "name":"Product 3",
                 "quantity":"1",
                 "sku":"112255",
                 "subtotal":"$7.99"}]}
        ', 1)

我正在使用Microsoft SQL Server 2016

我正在尝试使用IS JSON函数来检查它是否是有效的JSON字符串-肯定的,但是当使用JSON _VALUE函数时,我得到null输出

代码语言:javascript
复制
SELECT [User],
       [gca], 
       ISJSON([gca]) AS [ISJSON], 
       JSON_VALUE([gca], '$.i') AS [i],
       JSON_VALUE([gca], '$.name') AS [Product],
       JSON_VALUE([gca], '$.quantity') AS [Quantity],
       JSON_VALUE ([gca], '$.subtotal') AS [subtotal],
       [User]

FROM #JSONData

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 03:43:20

以下方法可能会帮助您获得预期的结果。函数JSON_VALUEJSON字符串中提取标量值。输入JSON$.items部分是一个JSON数组,因此您需要使用具有显式模式的OPENSJSON()将此JSON数组解析为表:

表:

代码语言:javascript
复制
CREATE TABLE #JSONData ( 
   [gca] NVARCHAR(MAX),
   [User] INT
); 
INSERT INTO #JSONData 
VALUES 
   (N'
{"items":[{"i":"image1",
                 "url":"url-1",
                 "name":"Product 1",
                 "quantity":"1",
                 "sku":"112233",
                 "subtotal":"$24.99"},
                 {"i":"image3",
                 "url":"url-3",
                 "name":"Product 3",
                 "quantity":"1",
                 "sku":"112255",
                 "subtotal":"$7.99"}]}
        ', 1)

声明:

代码语言:javascript
复制
SELECT 
   j.*,
   d.[User] AS u
FROM #JSONData d
CROSS APPLY OPENJSON(d.[gca], '$.items') WITH (
   i varchar(100) '$.i',
   p varchar(50) '$.name',
   q int '$.quantity',
   s varchar(20) '$.subtotal'
) j

输出:

代码语言:javascript
复制
---------------------------------
i       p           q   s       u
---------------------------------
image1  Product 1   1   $24.99  1
image3  Product 3   1   $7.99   1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58069038

复制
相关文章

相似问题

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