OPENJSON 要求兼容性级别 130,即SQLSERVER2016以上版本
1、默认输出的 OPENJSON
在不提供结果的显式架构的情况下使用 OPENJSON 函数时(在 OPENJSON 之后不使用 WITH 子句),该函数将返回包含以下三列的表:
- 输入对象中属性的名称(或输入数组中元素的索引)。
- 属性或数组元素的值。
- 类型(例如,字符串、数字、布尔值、数组或对象)。
OPENJSON 以单独的行返回 JSON 对象的每个属性或数组的每个元素。
示例1:JSON 对象的每个属性返回一行
示例2:数组的每个元素返回一行
2、显式结构的 OPENJSON
在 OPENJSON 函数的 WITH 子句指定结果的架构,该函数返回的表只包含 WITH 子句中定义的列。
在可选的 WITH 子句中,指定输出列、列类型和每个输出值的 JSON 源属性的路径。
OPENJSON 循环访问 JSON 对象的数组,读取每一列指定路径上的值,并将值转换为指定类型。
示例1:从json中解析数据为二维表
示例2:从数组中解析数据为二维表
示例3:从数组中解析数据为二维表(带嵌套json对象)