
- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - UNION 与 JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY 与 ORDER BY
- SQL - IN 与 EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - JSON_MODIFY() 函数
您可以使用 SQL **JSON_MODIFY()** 函数更新保存在 SQL Server 表列中的 JSON 数据。此函数添加到 JSON 函数系列中,以方便在 SQL Server 中存储、处理和查询 JSON 数据,它首次在 SQL Server 2016 中可用。
JSON_MODIFY() 函数可用于更新 JSON 字符串。它可以用于更新以下项目:
更新现有属性值
在现有数组中添加新元素
从 JSON 字符串中删除属性
删除属性
语法
以下是 SQL JSON_MODIFY() 函数的语法:
JSON_MODIFY ( expression , path , newValue )
参数
**expression** - 它通常是包含 JSON 文本的列名或变量。
**path** - 指定要更新的属性的 JSON 路径表达式。path 具有以下语法:
[append] [lax | strict] $.<json path>
**append** - 这是一种可选的修饰符,它指定应将新值附加到使用 <json path> 指定的数组。
**lax** - 它指定 <json path> 引用的属性不必存在。如果属性不存在,JSON_MODIFY 会尝试在指定的路径上插入新值。
**strict** - 它指定 <json path> 引用的属性必须存在于 JSON 表达式中。如果属性不存在,它将返回错误。
**<json path>** - 它指定要更新的属性的路径。
**newvalue** - path 指示的属性的新值。该值必须为 varchar 或 text。
示例
让我们尝试使用以下查询更新 JSON 字符串的属性值:
DECLARE @work VARCHAR(150) = '{"car":"RX100", "Price":45000}' SELECT JSON_MODIFY(@work,'$.Item', 'AUDI') AS UpdatedValue;
输出
执行上述查询后,将获得以下输出:
+---------------------------------------------------------+ | UpdatedValue | +---------------------------------------------------------+ | {"car":"RX100", "Price":45000,"Item":"AUDI"} | +---------------------------------------------------------+
示例
让我们来看另一个场景,我们将使用以下查询更新 JSON 字符串值:
SELECT JSON_MODIFY('{"Place": "INDIA"}', '$.Place', 'DUBAI') AS 'Result';
输出
执行上述查询后,将显示以下输出:
+----------------------------------------------+ | Result | +----------------------------------------------+ | {"Place": "DUBAI"} | +----------------------------------------------+
示例
在以下示例中,我们将使用以下查询在 JSON 字符串中插入新的属性和值:
DECLARE @work VARCHAR(150) = '{"car":"BMW","Price":2500000}' DECLARE @path VARCHAR(100) = '$.Color' DECLARE @newone VARCHAR(50) = 'Green' SELECT JSON_MODIFY(@work,@Path, @newone) AS UpdatedValue;
输出
执行上述查询后,将获得以下输出:
+---------------------------------------------------------+ | UpdatedValue | +---------------------------------------------------------+ | {"car":"BMW","Price":2500000,"Color":"Green"} | +---------------------------------------------------------+
示例
让我们来看另一个场景,我们将使用以下查询添加包含数组的新属性值:
DECLARE @work VARCHAR(4000) DECLARE @new VARCHAR(256) = N'["Engine","Wipers","DieselTank"]'; Set @work='{"Car":"BMW","Price":"2000000"}' Select JSON_MODIFY(@work,'$.SpareParts',@new) AS 'UpdatedValue';
输出
执行上述查询后,将显示以下输出:
+--------------------------------------------------------------------------------------+ | UpdatedValue | +--------------------------------------------------------------------------------------+ | {"Car":"BMW","Price":"2000000","SpareParts":"[\"Engine\",\"Wipers\",\"DieselTank\"]"}| +--------------------------------------------------------------------------------------+
示例
让我们来看以下示例,我们将使用以下查询更新 JSON 数据并检索原始和更新后的 JSON 输出:
DECLARE @work VARCHAR(4000) SET @work= '{"Beach": "ANDAMAN"}' SELECT @work AS 'OriginalValue', JSON_MODIFY(@work, '$.Beach', 'GOA') AS 'ModifiedValue';
输出
执行上述查询后,将获得以下输出:
+--------------------------+------------------------+ | OriginalValue | ModifiedValue | +--------------------------+------------------------+ | {"Beach": "ANDAMAN"} | {"Beach": "GOA"} | +--------------------------+------------------------+
示例
让我们来看以下示例,我们将使用以下查询重命名键:
DECLARE @work VARCHAR(4000) SET @work = '{"Brand":"HP"}'; SELECT @work AS 'OriginalValue', JSON_MODIFY( JSON_MODIFY(@work, '$.Company', JSON_VALUE(@work,'$.Brand')), '$.Brand',NULL) AS UpdatedValue;
输出
执行上述查询后,将显示以下输出:
+----------------+--------------------+ |OriginalValue | UpdatedValue | +----------------+--------------------+ | {"Brand":"HP"} | {"Company":"HP"} | +----------------+--------------------+
示例
让我们考虑另一个场景,我们将使用以下查询对 JSON 数据进行多次更改:
DECLARE @work VARCHAR(4000), @new VARCHAR(100); SET @work = '{"Location":"Himalayas","Place":"Mountains"}'; SET @new = '["Sheep","SnowBear"]'; SELECT @work AS 'OriginalValue', JSON_MODIFY(JSON_MODIFY(@work, '$.Animals', JSON_QUERY(@new)), '$.Location', 'Shimla') AS 'UpdatedValue';
输出
执行上述查询后,将显示以下输出:
+----------------------------------------------+----------------------------------------------------------------------------+ | OriginalValue | UpdatedValue | +----------------------------------------------+----------------------------------------------------------------------------+ | {"Location":"Himalayas","Place":"Mountains"} | {"Location":"Shimla","Place":"Mountains","Animals":["Sheep","SnowBear"]} | +----------------------------------------------+----------------------------------------------------------------------------+
示例
让我们来看以下示例,我们将使用以下查询递增 JSON 数据:
DECLARE @work VARCHAR(100)='{"click_count": 140}' PRINT @work SET @work=JSON_MODIFY(@work,'$.click_count', CAST(JSON_VALUE(@work,'$.click_count') AS INT)+3) PRINT @work
输出
执行上述查询后,将显示以下输出:
+----------------------+ | {"click_count": 140} | +----------------------+ | {"click_count": 143} | +----------------------+