【问题标题】:Modify JSON properties with T-SQL in SQL Server 2016在 SQL Server 2016 中使用 T-SQL 修改 JSON 属性
【发布时间】:2017-04-13 10:46:49
【问题描述】:

假设我有 JSON 数据:

DECLARE @json NVARCHAR(4000)
SET @json = 
N'{
    "info":{  
      "type":1,

      "address":{  
        "town":"Bristol",
        "county":"Avon",
        "country":"England"
      },
      "tags":["Sport", "Water polo"]
   },
   "type":"Basic"
}'

是否有任何标准方法可以在 SQL Server 2016 T-SQL 中操作 JSON 属性(添加新、重命名、删除),类似于 JObject 提供的方法?

【问题讨论】:

  • 你的意思是像JSON_MODIFY,如精美手册中所述?
  • Bingo,乍一看好像只能修改值,不能修改属性。

标签: sql-server json sql-server-2016


【解决方案1】:

要修改数据,需要使用 JSON_MODIFY 语句以 JSON 文件作为输入,以及必要的属性和新值。 这很容易。 如果要向数据数组添加新值,可以使用关键字append。如果要删除文件中的任何属性,则需要在 lax 模式下指定 null 值。 您还可以在此页面上找到代码示例http://codingsight.com/sql-server-2016-json-data-modification-part-4/

【讨论】:

    【解决方案2】:

    为了回答我自己的问题,我可以使用JSON_MODIFY 添加、删除属性。

    “重命名”可以通过结合JSON_VALUEJSON_MODIFY方法来实现,本质上是用旧数据添加新属性,然后删除旧属性。

    片段:

    -- Rename propety
    DECLARE @stats NVARCHAR(100)='{"click_count": 173}'
    PRINT @stats
    SET @stats= JSON_MODIFY(JSON_MODIFY(@stats,'$.click_count_new', JSON_VALUE(@stats,'$.click_count')) ,'$.click_count', NULL)
    PRINT @stats
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多