参考下
在SQL Server中,可以使用内置的OPENJSON函数来提取JSON格式的数据。以下是一个简单的例子,演示如何从一个包含JSON的字符串中提取数据:
假设我们有一个表JsonData,其中有一列JsonContent存储了JSON格式的数据。
CREATE TABLE JsonData (
Id INT PRIMARY KEY,
JsonContent NVARCHAR(MAX)
);
我们可以插入一条带有JSON的数据:
INSERT INTO JsonData (Id, JsonContent)
VALUES (1, '{"name": "John", "age": 30, "city": "New York"}');
现在,我们要提取这个JSON中的数据。可以使用OPENJSON函数:
SELECT *
FROM OpenJson(JsonData.JsonContent)
WITH (
name VARCHAR(100) '$.name',
age INT '$.age',
city VARCHAR(100) '$.city'
);
这将返回一个结果集,展示name,age和city字段的值。
如果JSON数据是数组格式的,可以使用OPENJSON配合WITH子句来指定如何提取数组中每个元素的数据。例如:
INSERT INTO JsonData (Id, JsonContent)
VALUES (2, '[{"name": "Jane", "age": 25, "city": "London"}, {"name": "Doe", "age": 22, "city": "Paris"}]');
提取JSON数组中的数据:
SELECT *
FROM OpenJson(JsonData.JsonContent)
WITH (
name VARCHAR(100) '$.name',
age INT '$.age',
city VARCHAR(100) '$.city'
)
WHERE [key] IS NOT NULL;
这里[key]列表示数组中元素的索引,当[key]为NULL时表示提取的是整个数组。结果集将包含数组中每个对象的name,age和city。