SQL Server查询嵌套JSON提取subject返回null问题求助
解决SQL Server提取JSON数组中subject字段的问题
你的问题出在JSON_VALUE的使用逻辑上:JSON_VALUE仅能提取单个标量JSON值,但你的JSON里Node是一个JSON数组,直接用$.results.data.Node.subject的路径无法定位到数组内的元素,因此返回null。
要提取数组中所有subject字段,需用OPENJSON解析数组,配合CROSS APPLY关联原表,具体SQL语句如下:
SELECT JSON_VALUE(node.value, '$.subject') AS subject FROM YourTableName CROSS APPLY OPENJSON(JsonResponse, '$.results.data.Node') AS node
关键说明:
OPENJSON(JsonResponse, '$.results.data.Node'):指定要解析的JSON列与数组路径,将数组拆分为一行行独立的JSON对象CROSS APPLY:将原表的每一行与解析出的数组元素关联,生成对应多行结果JSON_VALUE(node.value, '$.subject'):从每个数组元素(单个JSON对象)中提取subject值
如果需要保留原表其他字段,可直接在SELECT中添加,示例如下:
SELECT t.Id, -- 替换为原表实际字段 JSON_VALUE(node.value, '$.subject') AS subject FROM YourTableName t CROSS APPLY OPENJSON(t.JsonResponse, '$.results.data.Node') AS node
内容的提问来源于stack exchange,提问作者ɐlǝx
相关产品推荐
相关产品推荐

