首页 > 解决方案 > 如何忽略 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"}

标签: sqljsonsql-server

解决方案


使用更正的 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"}

推荐阅读