SQL Server2016解析Json格式数据

​​​​​​SQL Server解析Json格式数据_wangyanglongcc的博客-优快云博客_sql解析json格式字段

主要介绍5个函数:

openJson:打开Json字符串
IsJson:判断一个字符串是不是合法的Json格式。是返回1,否返回0,null返回null。
Json_Value:从Json字符串中提取值。
Json_Query:Json字符串中提取对象或数组。
Json_Modify:更新Json字符串中的属性值,并返回更新的Json字符串。

# 开始之前:创建示例数据
declare @json_str varchar(max)
set @json_str='[
  {"key":3,"value1":10,"value2":[{"vv21":13,"vv22":103}],"value3":null},
  {"key":4,"value1":15,"value2":[{"vv21":13,"vv22":103}],"value3":"10"},
  {"key":7,"value1":20,"value2":[{"vv21":13,"vv22":103}],"value3":"15"}
]'
1. IsJson:判断是不是合法的Json格式 > 用法:IsJson(@express)
SELECT IsJson(@json_str) as isjson = 1

2. Json_Value:从Json字符串中提取值
用法:Json_Value (value,’$.column’) from openjson(@express)

select JSON_VALUE(value,'$.key') as kk,
JSON_VALUE(value,'$.value1') as value1,
JSON_value(value,'$.value2') as value2,
JSON_QUERY(value,'$.value2') as value2_query,
JSON_VALUE(value,'$.value3') as value3
from openJson(@json_str) -- include_null_values
 

 image.png


注:

include_null_values 表示当表达式中为null,则输出null,默认会输出null。
当json_value获取的值是一个数组时,会返回null(如上value2),此时应该使用json_query进行解析。
3. Json_Query:从Json字符串中提取对象或数组
用法:Json_Query(value,’$.object’) from openjson(@express)

参见2中的示例

4. Json_Modify:更新Json字符串中的属性值
用法:json_Modify(value,’$.column’,newValue) from openjson(@express)

如将value1中的值都替换为10086

image.png
进阶用法:多层复杂的Json解析
将value2中嵌套的数组字典进行解析

select JSON_VALUE(value,'$.key') as kk,
JSON_VALUE(value,'$.value1') as value1,
JSON_QUERY(value,'$.value2') as value2_query,
JSON_VALUE(value,'$.value3') as value3,
t.vv21,t.vv22
from openJson(@json_str) as a
cross apply 
(
select JSON_VALUE(value,'$.vv21') as vv21,
             JSON_VALUE(value,'$.vv22')as vv22 
from openJson(Json_Query(value,'$.value2')) as b
) as t

image.png

原文链接:https://blog.youkuaiyun.com/qq_33246702/article/details/106711174

SQL Server 2016 引入了对 JSON 数据的支持,使得 SQL Server 能够更灵活地处理 JSON 格式的文本数据。这包括了在 SQL Server解析 JSON 字符串的功能。以下是 SQL Server 2016 解析 JSON 的主要特性: 1. OPENJSON 函数:SQL Server 2016 提供了 `OPENJSON` 函数,它可以从 JSON 字符串中解析出键值对,并以表格形式输出。`OPENJSON` 可以处理嵌套的 JSON 数据,并将其展开为行和列。 2. JSON_VALUE 函数:用于从 JSON 文本中提取标量值。`JSON_VALUE` 函数可以指定 JSON 路径,用来查找 JSON 对象中的特定值。 3. JSON_QUERY 函数:用于提取 JSON 文本中的对象或数组。如果需要从 JSON 数据中提取嵌套的 JSON 对象或数组,可以使用 `JSON_QUERY` 函数。 4. JSON_MODIFY 函数:可以在 JSON 文本中修改值,并返回修改后的 JSON 字符串。 5. JSON_PATH 选项:SQL Server 2016 支持 JSON_PATH 选项,可以在 `OPENJSON` 函数中使用它来指定需要提取的数据路径。 6. 嵌入式 JSON:在 SQL Server 表中存储 JSON 数据,将其作为文本值存储在列中。SQL Server 允许直接在这些列上使用 JSON 函数。 以下是一个简单的例子,展示如何在 SQL Server 2016 中使用 `OPENJSON` 函数: ```sql DECLARE @json NVARCHAR(MAX) SET @json = N'{ "id": 1, "name": "John Doe", "skills": ["SQL", "C#", "HTML"] }' SELECT * FROM OPENJSON(@json) WITH ( id INT '$.id', name NVARCHAR(50) '$.name', skills NVARCHAR(MAX) '$.skills' AS JSON ) ``` 这段代码将解析 JSON 字符串并将其转换为表格格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值