- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含类似数据的表
id deltas
23 [{"prop1": "value1","prop2": "value2},{"prop1": "value3","prop2": "value4}
这里的想法是增量包含一个对象数组。对象的模式总是 prop1 和 prop2 让我们说。这意味着对象将仅包含这 2 个属性。
我所追求的是编写 TSQL 查询,它给我类似的东西:
id property value
23 prop1 value1
23 prop2 value2
23 prop1 value3
23 prop2 value4
我已经可以使用 openjson,因为我将兼容级别设置为 130。我尝试了一个简单的 openjson
,但它给我的是一个键值,第一个对象为 0 键,值为 json。我想解析该值的 JSON。
最佳答案
您可以使用 OPENJSON
从 JSON 中提取值,然后使用 UNPIVOT
它们以您想要的格式重新组织值:
--temp table variable that holds your json
declare @source table (id int, props nvarchar(max))
--temp table variable that holds values extracted from your json
declare @tmp table (id int, prop1 nvarchar(max), prop2 nvarchar(max))
--populate temp table with the data you posted
insert into @source
select 23,'[{"prop1": "value1","prop2": "value2"},{"prop1": "value3","prop2": "value4"}]'
--use OPENJSON to extract data from "props" column holding your json
insert into @tmp
select id, prop1,prop2 from @source cross apply OPENJSON(props)
with
(
prop1 nvarchar(100),
prop2 nvarchar(100)
)
--unpivot the result to get desired result
select id, u.property, u.value
from @tmp t
unpivot(
[value] for [property] in (prop1,prop2)
) u;
这是此 TSQL 片段的输出:
如果您不需要中间结果,您可以避免使用临时表并在一个步骤中处理您的数据:
--temp table variable that holds your json
declare @source table (id int, props nvarchar(max))
--populate temp table with the data you posted
insert into @source
select 23,'[{"prop1": "value1","prop2": "value2"},{"prop1": "value3","prop2": "value4"}]'
--use openjson to fetch data from JSON and then unpivot the result to get desired format
select id, u.property, u.value
from (select id, prop1, prop2 from @source cross apply OPENJSON(props)
with
(
prop1 nvarchar(100),
prop2 nvarchar(100)
)
) t
unpivot(
[value] for [property] in (t.prop1,t.prop2)
) u;
附言
您发布的 JSON:
[{"prop1": "value1","prop2": "value2},{"prop1": "value3","prop2": "value4}
无效,因为缺少最后一个方括号以及 value2 和 value4 之后的几个引号。您可以使用 ISJSON()
进行检查,它将返回 0:
select isjson(' [{"prop1": "value1","prop2": "value2},{"prop1": "value3","prop2": "value4}')
所以我假设输入实际上是:
[{"prop1": "value1","prop2": "value2"},{"prop1": "value3","prop2": "value4"}]
关于sql-server - OPENJSON 扩展了其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43485331/
我有一个像这样的 JSON 结构: Declare @layout NVARCHAR(MAX) = N' { "Sections": [ {
我有一个使用 OPENJSON 将 JSON 数据导入表的 SQL 查询。我的问题是我需要的数据是嵌套的。如何在 JSON 路径中使用通配符来获取我需要的内容? SELECT @Set = BulkC
我有一个包含多行的临时表,每一行都有一个名为 Categories 的列。 ;其中包含一个非常简单的 json 数组 ids对于不同表中的类别。 临时表的几个示例行: Id
我有一个查询,它采用一个数组,该数组包含一个明确数量(假设为 100 个)的值序列数组。json 看起来像这样 [["horse",6], ..., ["dog",100]] 这些数组元素中的每一
我有一个包含类似数据的表 id deltas 23 [{"prop1": "value1","prop2": "value2},{"prop1": "value3","prop2":
这是我的问题:我的 JSON 可能会根据 API 响应而有所不同,并且不能保证下次有发布请求时“shortTitle”可以出现在我的 JSON 中。我必须弄清楚如何通过 JSON“循环”(如果这是正确
这是我的问题:我的 JSON 可能会根据 API 响应而有所不同,并且不能保证下次有发布请求时“shortTitle”可以出现在我的 JSON 中。我必须弄清楚如何通过 JSON“循环”(如果这是正确
考虑这个 JSON: { "Name": "Alice", "Relations": [ { "RelationId": 1,
想知道是否有人能找出问题所在,当我从 [HubSpotCache] 以外的另一个数据库(仍在同一个 SQL 实例中)读取表时,我不断收到此错误。 Msg 319, Level 15, State 1,
这个问题是基于来自 JSON data in SQL Server 的信息在线文档中的文章: DECLARE @json NVARCHAR(MAX); SET @json = N'[ {"id":
我有一个产品表,其中有两个属性列和一个 json 列。我希望能够分隔 json 列并插入保留属性的额外行。示例数据如下所示: ID Name Attributes
这个问题是基于来自 JSON data in SQL Server 的信息在线文档中的文章: DECLARE @json NVARCHAR(MAX); SET @json = N'[ {"id":
我有以下 JSON 数据 DECLARE @jsonData NVARCHAR(MAX) SET @jsonData = '{ "insertions":[ {
我的 Microsoft (MS) SQL Server 查询中有一个 json 对象。这个 JSON 对象确实有一个值,它是一个字符串数组。 --this variable holds my JSO
我有一系列 OPENJSON 语句,在存储过程的最后一步,我从倒数第二个表的最后一列解析了一些 JSON。最后一列几乎总是空的,但它是从一个 JSON 对象填充的,所以它偶尔会有一些信息。我正在尝试将
下面的@json在数组中包含3个数据对象。使用 OPENJSON 将这些对象提取到表变量后,请参阅随附的输出。 DECLARE @json NVARCHAR(MAX); SET @json = N'
declare @Path as nvarchar(100) set @path = '$.path.to."sub-object"' DECLARE @json NVARCHAR(4000) = N
我正在尝试在 Python 脚本中使用 OPENJSON 将一些基本的 JSON 导入到 SQL 数据库中。我最初尝试使用更复杂的 JSON 文件,但为了这篇文章对其进行了简化。这是我拥有的: sql
我想知道如何将这个 由两个 float 数组组成 的 JSON 对象放入 SQL 数据库表中: { "Latitudes": [ 53.665084, 53.665084,
我有一些我想在 SQL Server 2016 中解析的 json。有 Projects->Structures->Properties 的层次结构。我想编写一个解析整个层次结构的查询,但我不想通过索
我是一名优秀的程序员,十分优秀!