sql - 如何忽略 SQL Server JSON 值中的几个属性
问题描述
我有一个表,其中有一列包含 JSON 数据。每列中的每个 JSON 对象都有许多属性。我有另一个表,其属性名称不是全部而是少数。
我需要做的是编写一个查询以从表中选择 JSON 数据,但 JSON 不应包含第二个表中的属性。例如,下面是 JSON 表。
Id Person
1 {FirstName:"test", LastName: "test", Email: "test@test.abc"}
2 {FirstName:"syx", LastName: "ave", Email: "yyeyd@test.abc"}
具有属性名称的第二个表:
ExclusionId ExcludedProperty
1 Email
查询应该加入这两个表,输出应该是
Id Person
1 {FirstName:"test", LastName: "test"}
2 {FirstName:"syx", LastName: "ave"}
解决方案
使用更正的 JSON,您可以使用JSON_MODIFY()
并将所需的值设置为NULL
例子
Declare @YourTable Table ([Id] int,[Person] varchar(500))
Insert Into @YourTable Values
(1,'{"FirstName":"test", "LastName": "test", "Email": "test@test.abc"}')
,(2,'{"FirstName":"syx", "LastName": "ave", "Email": "yyeyd@test.abc"}')
Select A.ID
,NewValue = JSON_MODIFY([Person],'$.Email',null)
From @YourTable A
退货
ID NewValue
1 {"FirstName":"test", "LastName": "test"}
2 {"FirstName":"syx", "LastName": "ave"}
推荐阅读
- git - 我应该在创建新分支之前结帐到 div 吗?
- freebsd - 有没有办法用 FreeBSD 控制 GPIO 端口?
- postgresql - EF Core AsSplitQuery 不尊重 OrderBy
- java - 转换器的类型 UUID 与属性类型 Set 不匹配
- android - 有哪些 HTTP 拦截器替代方案可将授权标头添加到 Android Apollo 客户端
- javascript - 使用Jquery和PHP单击保存按钮时如何将多个表行更新为mysql表?
- javascript - How to use props.match.params?
- npm - 无法安装已发布的 GitLab 私有包
- python - 如何从 QuestDB 获取查询结果到 Pandas 数据框中?
- angular - 将集合的最高序列号保存在变量中