使用存储在单元格中的 JSON 数组连接表行

CROSS APPLY 使你可以使用存储在列中的 JSON 对象集合来连接表中的行。

假设你有一个 Company 表,其中包含一个包含格式为 JSON 数组的产品数组(ProductList 列)的列。OPENJSON 表值函数可以解析这些值并返回产品集。你可以从 Company 表中选择所有行,使用 OPENJSON 解析 JSON 产品并使用父 Company 行加入生成的结果:

SELECT *
FROM Companies c 
     CROSS APPLY OPENJSON( c.ProductList )
                 WITH ( Id int, Title nvarchar(30), Price money)

对于每一行, ProductList 单元格的值将提供给 OPENJSON 函数,该函数将 JSON 对象转换为具有 WITH 子句中定义的模式的行。