首頁 >資料庫 >SQL >SQL Server解析/操作Json格式欄位資料的方法實例

SQL Server解析/操作Json格式欄位資料的方法實例

WBOY
WBOY轉載
2022-08-29 12:00:015182瀏覽

這篇文章為大家帶來了關於SQL server的相關知識,其中主要介紹了SQL SERVER沒有自帶的解析json函數,需要自建一個函數(表值函數),下面介紹關於SQL Server解析/操作Json格式欄位資料的相關資料,希望對大家有幫助。

SQL Server解析/操作Json格式欄位資料的方法實例

推薦學習:《SQL教學

#1 json儲存

在sqlserver 中儲存json ,需要用字串型別進行存儲,一般用nvarchar()或varchar()進行存儲,不要用text進行存儲,用text時候,json的函數不支援。

2 json運算

主要介紹5個函數:

(1)openJson:開啟Json字串

(2)IsJson:判斷一個字符串是不是合法的Json格式。是回傳1,否回傳0,null回傳null。

(3)Json_Value:從Json字串中提取值。

(4)Json_Query:Json字串中提取物件或陣列。

(5)Json_Modify:更新Json字串中的屬性值,並傳回更新的Json字串。

新建wm_json_demo 表:

CREATE TABLE demo_plus.dbo.wm_json_demo (
	id int IDENTITY(1,1) NOT NULL,
	json_detail varchar(max) NOT NULL,
	CONSTRAINT PK_wm_json_demo PRIMARY KEY (id)
);

下面以wm_json_demo 為例,示範以上5個json運算相關的函數

INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":3,"value1":10,"value2":[{"vv21":13,"vv22":103}],"value3":null}');
INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":4,"value1":15,"value2":[{"vv21":13,"vv22":103}],"value3":"10"}');
INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":7,"value1":20,"value2":[{"vv21":13,"vv22":103}],"value3":"15"}');

IsJson:判斷一個字串是不是合法的Json格式。是回傳1,否回傳0,null回傳null。

SELECT
	IsJson(json_detail) as IsJson
from
	demo_plus.dbo.wm_json_demo

Json_Value:從Json欄位擷取值

用法:Json_Value (cloumn_name,'$.json_field_name') from table

Json_Query:Json字串中提取物件或陣列。

用法:Json_Query (cloumn_name,'$.json_field_name') from table

SELECT
	JSON_VALUE(json_detail,'$.key') as 'key',
	JSON_VALUE(json_detail,'$.value1') as value1,
	JSON_value(json_detail,'$.value2') as value2,
	JSON_QUERY(json_detail,'$.value2') as value2_query,
	JSON_VALUE(json_detail,'$.value3') as value3
from demo_plus.dbo.wm_json_demo;

Json_Modify:更新Json字串中的屬性值,並傳回更新的Json字串。

JSON_MODIFY(column_name, '$.json_field', 'change_info');

SELECT
	JSON_MODIFY(json_detail,
	'$.value1',
	11) as json_detail
from
	demo_plus.dbo.wm_json_demo
where
	JSON_VALUE(json_detail,
	'$.key')= 7;

#推薦學習:《 SQL教學

以上是SQL Server解析/操作Json格式欄位資料的方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除