问题标签 [sql-server-json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2067 浏览

json - 测试以查看嵌套 JSON 数组中是否存在值

我有一个 SQL 2016 表,其中包含一个包含 JSON 数据的列。示例 JSON 文档如下所示:

我想提取interests每个friends对象的数组包含某个值的所有文档。我尝试了这个但没有得到任何结果:

我应该已经返回了几行。我一定没有正确引用兴趣数组或不理解 SQL Server 如何处理这种类型的 JSON 数组。

0 投票
4 回答
6762 浏览

json - Sql Server 2016 中 json 数据的 Where 子句

我的表中有一个 nvarchar(1000) 字段,我在该列中存储 JSON 数据。

例如:

从此我如何在sql server中使用JSON_QUERY获取所有查询ID为1的CONTENT_RULE_ID

0 投票
2 回答
133 浏览

arrays - Sql Server - 将表的整数数据类型列的查询结果格式化为数组

当我运行以下查询时,结果类似于下面屏幕截图中提供的结果。

在此处输入图像描述

我很好奇是否有可能以相反的方式进行。我的意思是,如果我有这样的查询:

那么它应该提供如下结果:[1,2,45,1,21,45,32,564,48,56,98,87]

我尝试使用For JSON ,但它只会返回 JSON 数组。(不是 int 数组)

现在我知道还有其他方法可以做到这一点,我也做到了。但是有没有办法使用 Sql Server JSON 函数来做到这一点?

谢谢

编辑: 目前我正在使用东西来连接所有行。但我想知道是否有类似FOR JSON PATH的事情。

0 投票
7 回答
18650 浏览

json - 在 SQL Server 中连接或合并两个 json 对象

我有一个表格,在一列中存储 json。我想通过合并另一个 json 来更新 json 值。

就像是:

这应该导致像这样的json:

不幸的是,没有这样的JSON_MERGE功能,JSON_MODIFY让我只能一一修改列。我有太多的东西,包括嵌套属性。

我基本上是在寻找相当于postgres || 连接运算符

0 投票
1 回答
8218 浏览

sql-server - 在 SQL Server 中查询复杂的 JSON - 过滤对象数组

我在将 Msft Sql Server 中的 JSON 函数网格在一起时遇到问题。我有一个存储复杂 JSON 结构的表,需要提取对象数组的子集。

例如,我制作了一个简单的脚本来创建一个表并用一些记录填充它:

我正在尝试获取 B 公司的福特汽车清单。我的想法是获取公司 B 的记录,然后解析 json 以获取 Make = 'Ford' 的车辆数组。这个脚本有效,但它真的很笨重。

在我看来,这一切都应该汇总到一个单一的声明中。

我看到的第一个问题是 JSON_QUERY 函数将我的对象数组作为字符串返回,但它不是纯 JSON。我手动为该字符串添加前缀和后缀,使其成为真正的 JSON 格式。
我尝试使用 For JSON PATH 输出真正的 JSON,但这不允许我将输出分配给变量。

下一个问题是 OPENJSON 正在处理一个字符串变量,它遵循我找到的所有 Msft 示例。我发现这些示例很奇怪,因为我假设大多数实际实现会将 JSON 存储在某种表中。

免责声明:我在上面示例中使用的 JSON 结构比我必须使用的格式简单得多。我正在考虑将结构分解为更简单的组件,然后在 Select 查询中构建最终的完整结构。性能也可能决定这种复杂结构的分解。我的意图是创建有助于将 JSON“非规范化”为更传统的 SQL 数据格式以进行调试和过滤的视图。

0 投票
1 回答
1654 浏览

json - 无法使用 OPENJSON 和 SQL Server 2017 解析具有动态键的对象数组

我在使用 SQL Server 2017 解析一组 JSON 文档时遇到了一些麻烦。

我在文档中遇到了一个嵌套数组(下面的示例),它使用动态 ObjectId 即 123 作为对象键,而不是使用静态键,即类别,然后有一个单独的键:值来引用 ObjectId。

因此,如果不指定每个单独的对象 ID(有数千个),我就无法使用常规的 CROSS APPLY OPENJSON 语法将项目提取到表中?

有没有一种方法可以在不明确引用每个 ObjectId 的情况下做到这一点,理想情况下我想返回表中的所有产品项目,并且只有一个带有 categoryId 的字段。

0 投票
1 回答
106 浏览

json - 带有转义字符的 JSON 查询返回结果

从以下查询中,我得到的结果为:

查询是复制此结果的以下查询,我已经简化了查询实际使用的查询,但基于选择是这样的:

预期结果 :

如何实现?

0 投票
2 回答
123 浏览

json - 具有指定格式的表到 JSON

我有以下查询并尝试使用下面指定的 JSON 格式:

电流输出

预期产出

0 投票
1 回答
336 浏览

json - SQL Server:从另一个 json 更新 json——通常

在 SQL Server 中,如何在不显式使用键/定义列的情况下将 json 与另一个 json 更新/合并?

一些背景知识:我将元数据作为 json 存储在varchar(max)列中。每条记录在同一个表中可以有不同的元数据键。就像将人员和产品存储在同一张表中一样。类似于EAV 数据模型,但我使用 json 列将元数据存储为键值对,而不是值表。这就是为什么我正在寻找一个通用的解决方案。

即一个记录可以有元数据

同一张表中的另一条记录可以有元数据

我正在寻找一种高效/现代的方式来从 json 更新/添加 json 中的多个值。

即来源

要更新/添加的内容:

结果源更新为:

我的解决方案:

我的解决方案有效,但是:

  1. 可能不适用于数组或嵌套 json。好吧,暂时不打扰我。

  2. 我想知道是否有更合适/情感/优雅的方式来完成整个解决方案,也许使用 json_modify ?

  3. 键值对的顺序没有保留为源,但我想这没什么大不了的。

  4. 在没有明确定义列并且没有“for json auto”给出的“垃圾”的情况下将键值表转换回json的任何正常方法?

代码:

输出:

更新:

基于Roman Pekar 优雅的解决方案,我在该解决方案中添加了另一个案例,以在值为 [type] = 2(int) 时排除引号。当像我这样有数百万条记录时,额外的报价会影响存储。

0 投票
2 回答
313 浏览

r - 我在一个充满 JSON 格式的数据框中有一列,每行的长度不同

我有包含不同长度的 JSON 格式(我的意思是值)的数据框列,我使用过--fromJSON 函数并对其进行解析,但它包含多个嵌套列表,我不知道如何将 JSON 中的每个值分隔成一个多列...

任何人都可以像我需要每个值(即)v1,v2,v3,v4 ...在单独的列中提供帮助...就像在R中可以做到这一点...??真的需要帮助...!