从 openjson SQL Server 2016 中的嵌套数组中删除对象

2023-12-03

我想删除"AttributeName" : "Manufacturer"来自 SQL Server 2016 中的以下 json:

declare @json nvarchar(max) = '[{"Type":"G","GroupBy":[],
"Attributes":[{"AttributeName":"Class Designation / Compressive Strength"},{"AttributeName":"Size"},{"AttributeName":"Manufacturer"}]}]'

这是我尝试过的查询,但不起作用

select JSON_MODIFY((
select JSON_Query(@json, '$[0].Attributes') as res),'$.AttributeName.Manufacturer', null) 

这是使用的工作解决方案for json and 打开 json。重点是:

  1. 确定您要删除的项目并将其替换为NULL。这是由JSON_MODIFY(@json,'$[0].Attributes[2]', null)。我们只是说,将第二个元素放入Attributes并将其替换为 null

  2. 将此数组转换为行集。我们需要以某种方式摆脱这个null元素,这是我们可以在 SQL 中轻松过滤的内容where [value] is not null

  3. 将其全部组装回原始 JSON。这是由FOR JSON AUTO

请记住此类 JSON 数据转换的一个重要方面:

JSON 设计用于信息交换或最终存储信息。但您应该避免 SQL 级别上更复杂的数据操作。

无论如何,解决方案在这里:

declare @json nvarchar(max) = '[{"Type": "G","GroupBy": [],"Attributes": [{"AttributeName": "Class Designation / Compressive Strength"}, {"AttributeName": "Size"}, {"AttributeName": "Manufacturer"}]}]';            

with src as
(
    SELECT * FROM OPENJSON(
        JSON_Query(
            JSON_MODIFY(@json,'$[0].Attributes[2]', null) , '$[0].Attributes'))
)
select JSON_MODIFY(@json,'$[0].Attributes', (
    select JSON_VALUE([value], '$.AttributeName') as [AttributeName] from src
    where [value] is not null
    FOR JSON AUTO 
)) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 openjson SQL Server 2016 中的嵌套数组中删除对象 的相关文章

随机推荐

  • 寻找 UTF-8 文本编辑器

    我正在寻找一个 简单的 文本编辑器 可以处理同一文档中不同编码的文本 我需要开发一些日语和英语混合文本的网站 而我现在的编辑器 在英语 Windows 系统上 无法显示日语文本 Jedit 文件不显示我输入的日语文本 但当我在浏览器中查看该
  • SQL Server 中的会话全局临时表

    在 SQL Server 中 名称类似于 temp 的临时表具有本地作用域 如果您在会话中创建它们 则会话中的所有内容都可以看到它们 但会话外则看不到它们 如果您在存储过程中创建这样的表 则作用域是该过程的本地范围 所以当进程退出时 表就消
  • 更改 WPF C# 中文本某些部分的颜色和字体

    有没有办法更改我想放在 TextBox 或 RichTextBox 上的文本某些部分的颜色和字体 我正在使用 C WPF 例如 richTextBox AppendText Text1 word Text2 变量词例如可以是 Text1 和
  • SendGrid:如何从 Azure Blob 存储附加文件?

    我在 Windows Azure Blob 存储中有 Blob 我想将其附加到使用 SendGrid 发送的电子邮件中 我想指定附件的文件名 真实的文件名只是胡言乱语 据我所知 这迫使我将附件添加为流 我的代码如下所示 var msg Se
  • 无法从 AWS Cognito 注销用户

    我已经设置了使用 AWS Cognito 进行身份验证的 API 网关 用户登录后 我使用以下脚本来验证他们的凭据 const cognitoidentityserviceprovider new AWS CognitoIdentitySe
  • 将文件传递给另一个 iPhone 应用程序

    有谁知道有任何示例或开源代码可以做到这一点吗 或者写一篇解释如何做的文章 Apple 有相当多的示例代码可以在其他应用程序中打开网址 但我找不到任何应用程序要求另一个应用程序打开手机上存储的文件的示例 Thanks 有两种方法可以做到这一点
  • 将参数传递给dispatch_async

    我是 Swift 新手 正在研究dispatch async 函数的工作原理 API 文档显示dispatch async 有两个参数 不过 我可以传递一个参数 这没关系 dispatch async dispatch get main q
  • 在所有延迟作业成功回调之前挂钩以保存成功完成的作业

    客观的 保存成功完成的作业 使用的方法 看过这个答案它告诉我们如何保存已完成的作业以及这个答案这建议创建一个将在生命周期事件之一之后执行的插件 Problem 有以下生命周期事件以及适用的参数 如code enqueue gt job ex
  • 如何在使用 ANT 运行类或套件中的所有测试时打印当前正在执行的 JUnit 测试方法?

    我有一组 JUnit 测试用例 我使用 ANT 从 ANT 执行它们junit任务 执行测试时 在控制台中我只能看到当前正在运行的测试用例 即 Java 类 但看不到测试方法 有没有办法可以打印当前正在执行的测试方法 或者除了拥有自己的 J
  • 创建 Excel 宏以将 XML 导出到特定文件夹

    我需要创建一个宏 我以前从未做过 如果你们能引导我走上正确的道路 我将非常感激 我目前正在做什么 我创建了一个映射 XML 并将其导入到 Excel 中 将其导入 Excel 后 用户将继续在其中粘贴一些数据并将其导出以接收 XML 数据文
  • 如何防止 Rust 基准库优化我的代码?

    我有一个简单的想法 我想在 Rust 中进行基准测试 然而 当我去测量它时test Bencher 我试图与之比较的基本情况 feature test extern crate test cfg test mod tests use tes
  • 使用 Javascript 将对象数组导出到 Excel

    我正在编写一个客户端方法 该方法创建一个对象数组 我打开一个现有的 Excel 来写入该数组中的值 我使用 getProperty 获取值并将其存储在变量中 当我尝试在 Excel 中写入这些内容时 我收到 事件处理程序失败并显示消息 Co
  • 在 Eclipse 中为 C++ 设置 GTKmm

    我正在尝试在 Eclipse 中使用 GTKmm 创建 GUI 但是我无法使配置工作 作为参考 这是我的实际代码 include
  • Inno Setup 缩短文件路径字符串以适合 FilenameLabel

    On the WizardForm InstallingPage the WizardForm FilenameLabel自动截断包含文件路径的字符串 以在开头包含驱动器盘符 后跟最大可显示路径 从路径的顶层截断 以适合标签的大小 以便始终
  • 在解决方案树之间共享项目的最佳实践(MSVC 2008 和 MSVC 2010)

    我们有 50 多个项目 分为由 TFS 管理的 2 个解决方案树 版本 Visual Studio 2008 TFS RTM 9 0 21022 8 30 多个项目是 Visual Studio 2008 项目 其他项目是 Visual S
  • MATLAB:无需使用现有函数即可进行 10 倍交叉验证

    我有一个矩阵 我想在 MatLab 中你称之为结构 或数据结构 data 150x4 double labels 150x1 double 这是我的矩阵 数据看起来假设我确实使用矩阵名称加载我的文件 5 1000 3 5000 1 4000
  • 使用 jQuery 读取客户端剪贴板?

    是否可以使用 jQuery 获取 读取客户端的剪贴板 我需要获取电子表格的信息并将该信息粘贴到 jqGrid 网络网格中 好吧 根据对于这个类似的问题仅用 JavaScript 是无法完成的 这很好 因为这将是一个重大的安全风险 您需要一个
  • 获取应用程序Windows的完整目录[重复]

    这个问题在这里已经有答案了 可能的重复 获取可执行文件的路径 我有一个 C 应用程序 如何获取我的完整目录 该应用程序的 exe 文件存在的位置 编辑 操作系统 Windows Windows WCHAR path MAX PATH Get
  • MySQL SELECT 最近几天?

    我正在使用 MYSQL 我知道有一个限制命令可以显示一定数量的结果 但我想知道 MySQL 是否只能显示最近 3 天或其他内容 就是想 Update 我使用 NOW 来存储时间 用于三天前的约会 WHERE t date gt DATE A
  • 从 openjson SQL Server 2016 中的嵌套数组中删除对象

    我想删除 AttributeName Manufacturer 来自 SQL Server 2016 中的以下 json declare json nvarchar max Type G GroupBy Attributes Attribu