
- 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} | +----------------------+