京公网安备 11010802034615号
经营许可证编号:京B2-20210330
SQL Server 提供了许多用于处理 JSON 数据的功能,其中之一是解析 JSON 数组。在此篇文章中,我将会介绍如何在 SQL Server 中解析 JSON 数组以及一些相关的注意事项。
JSON 数组的基本概念
JSON 数组是一种存储多个值的方式,每个值都可以是一个简单的类型(例如字符串、数字或布尔值)或者是一个复杂的类型(例如对象或其他数组)。JSON 数组由方括号 [] 包围,其中的值使用逗号分隔。
示例:
[ { "name": "John", "age": 30, "city": "New York" }, { "name": "Mary", "age": 25, "city": "Los Angeles" } ]
以上是一个包含两个对象的 JSON 数组,每个对象都有 name、age 和 city 三个属性。
SQL Server 如何解析 JSON 数组
SQL Server 提供了 OPENJSON 函数来解析 JSON 数据。通过这个函数,你可以将 JSON 数组转换成表格形式,每行代表一个数组元素,每列代表一个属性。
以下是 OPENJSON 函数的基本语法:
OPENJSON(json_expression[, path]) [WITH (property_name data_type [,...])]
示例:
DECLARE @json NVARCHAR(MAX) SET @json = '[{"name": "John","age": 30,"city": "New York"},{"name": "Mary","age": 25,"city": "Los Angeles"}]' SELECT * FROM OPENJSON(@json)
以上 SQL 查询将会返回以下结果:
+-----------+-------+-------------+
| key | value | type |
+-----------+-------+-------------+
| 0 | -- | 5 (= JSON_ARRAY)|
| [0].name | John | 1 (= JSON_STRING)|
| [0].age | 30 | 2 (= JSON_INT)|
| [0].city | New York | 1 (= JSON_STRING)|
| 1 | -- | 5 (= JSON_ARRAY)|
| [1].name | Mary | 1 (= JSON_STRING)|
| [1].age | 25 | 2 (= JSON_INT)|
| [1].city | Los Angeles | 1 (= JSON_STRING)|
+-----------+-------+-------------+
在上面的查询中,我们使用了 OPENJSON 函数来解析 JSON 数组,并且没有指定 path 参数。因此,整个 JSON 对象都被解析了。OPENJSON 函数返回了一个表格,其中每行代表一个数组元素,每列代表一个属性。具体来说,表格包含三列:
注意事项
在使用 OPENJSON 函数时,需要注意以下几点:
总结
SQL Server 提供了 OPENJSON 函数来解析 JSON 数据,可以将 JSON 数组转换成表格形式,方便后续的数据处理。在
使用 OPENJSON 函数时,需要注意传入的 JSON 数组必须是有效的 JSON 格式,并且如果数组中包含了对象数组,则需要使用嵌套的 OPENJSON 函数来解析。此外,OPENJSON 函数只能返回基本数据类型,如果要返回复杂数据类型,需要进行一些转换操作。
在处理多维数组时,可以使用 CROSS APPLY 子句来展开数组。以下是一个具有嵌套数组和对象的示例:
{ "name": "John", "age": 30, "hobbies": [ { "name": "reading", "level": 3 }, { "name": "swimming", "level": 2 } ] }
我们可以使用如下 SQL 查询来解析该 JSON 对象:
DECLARE @json NVARCHAR(MAX) SET @json = '{"name": "John","age": 30,"hobbies": [{"name": "reading", "level": 3}, {"name": "swimming", "level": 2}]}' SELECT name, age, hobby_name, hobby_level FROM OPENJSON(@json) WITH (
name VARCHAR(50),
age INT,
hobbies NVARCHAR(MAX) AS JSON
) AS person CROSS APPLY OPENJSON(person.hobbies) WITH (
hobby_name VARCHAR(50),
hobby_level INT );
以上 SQL 查询将会返回以下结果:
+------+-----+------------+-------------+ | name | age | hobby_name | hobby_level | +------+-----+------------+-------------+ | John | 30 | reading | 3 | | John | 30 | swimming | 2 | +------+-----+------------+-------------+
在查询中,我们使用了 CROSS APPLY 子句来展开 hobbies 数组,并用嵌套的 WITH 子句来解析数组中的对象。最终得到包含两列的结果集,其中每行代表一个 hobby 兴趣。
结论
在 SQL Server 中,可以使用 OPENJSON 函数来解析 JSON 数组。通过将 JSON 数组转换为表格形式,可以方便地进行后续的数据处理。在使用 OPENJSON 函数时,需要注意传入的 JSON 数组必须是有效的 JSON 格式,并且如果数组中包含了对象数组,则需要使用嵌套的 OPENJSON 函数来解析。此外,在处理多维数组时,可以使用 CROSS APPLY 子句来展开数组。
推荐学习书籍
《**CDA一级教材**》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
AB实验是互联网产品迭代、营销优化、功能升级的核心科学验证手段,通过流量随机分组、对照组与实验组对比,科学验证策略、功能、 ...
2026-08-10在MySQL数据库优化中,索引是提升查询效率、降低数据库IO开销、优化系统性能的核心手段。普通单列索引仅适配简单查询场景,面对 ...
2026-08-10 很多数据分析师每天盯着几十个指标,但当被问到“这套指标要支撑什么业务目标”“指标之间是什么逻辑关系”“业务变化时如何 ...
2026-08-10在数字化市场调研体系中,大数据与小数据是两类核心调研数据形态,分别对应海量行为统计与精准样本深度调研。行业普遍存在认知误 ...
2026-08-07数据透视表是Excel、WPS中最核心的数据分析工具,凭借快速汇总、分组统计、动态筛选的优势,被广泛应用于销量统计、业绩复盘、数 ...
2026-08-07 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-08-07在商品销量、市场需求、营收规模等业务数据中,季节性波动是最普遍、最核心的数据特征。零售快消、食品餐饮、家电服饰、电商行业 ...
2026-08-06在流量红利消退、市场竞争白热化的商业环境中,传统依托经验、跟风投放、广撒网式的营销模式,逐渐暴露出成本高、精准度低、转化 ...
2026-08-06 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“什么是指标”“指标和维度有什么区别”“如何定义指标值的计算规则和 ...
2026-08-06【核心关键词】知识、设备、工程师、数字化、建模、算法、工业大数据、数据分析、控制算法、机器学习、深度学习、业务目标、工 ...
2026-08-05增长率是数据分析、业务报表、可视化看板中最核心的指标之一,常用于衡量营收、销量、用户量、流量等业务数据的涨跌幅度与发展趋 ...
2026-08-05小陈是某电商平台的数据分析师。老板交给他一个任务:“我们平台的注册用户已经突破1000万了,想了解一下用户的平均月消费金额。 ...
2026-08-05在机器学习建模、数据预处理、抽样划分、模型初始化训练的全流程中,随机种子是控制实验随机性、保证结果可复现、提升模型稳定性 ...
2026-08-04Python作为面向对象的主流编程语言,核心编程体系由变量、方法、类三大基础要素构成。三者层层递进、相互协作,支撑起所有基础代 ...
2026-08-04 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-08-04为什么学习数据分析? 当下,我们已然步入数据要素价值全面释放的智能时代。数据不再只是零散的数字记录,更是驱动新质生产力运 ...
2026-08-03CDA等级认证证书有效期为三年,三年进行一次年审,主要考察CDA持证人的职业发展情况;学历、工作单位及职业变更情况;继续教育 ...
2026-08-03【核心关键词】金融、岗位、企业、算法、知识、专业、理论、课程、软件、数据分析、业务类型、应用场景、经营管理、大型企业、 ...
2026-08-03在日常数据分析、业务报表复盘、业绩预测工作中,平均增长率是衡量数据长期变化趋势的核心指标,广泛用于营收增长、用户增长、销 ...
2026-08-03很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会算平 ...
2026-08-03