SQL Server中查询有效JSON字段为何返回全NULL值?
解决SQL Server中JSON_VALUE返回NULL的问题
你的问题出在JSON路径的写法上:示例数据是数组类型的JSON(外层包裹[]),而你使用的$.price是针对单个JSON对象的路径,无法定位到数组内部的元素,所以所有记录返回NULL。
针对单元素数组的解决方案
如果数组固定只有一个元素,修改JSON路径为数组索引定位的格式即可:
SELECT JSON_VALUE(odometer_surcharges, '$[0].price') AS price FROM postgres.warranty_terms
这里$[0]表示数组的第一个元素(SQL Server中数组索引从0开始),之后再访问其price属性就能正确取值。
针对多元素数组的解决方案
如果数组可能包含多个元素,想要提取所有元素的price值,可以使用OPENJSON配合CROSS APPLY来将数组拆分为行数据:
SELECT j.price FROM postgres.warranty_terms t CROSS APPLY OPENJSON(t.odometer_surcharges) WITH (price INT '$.price') j
这个写法会把每条记录中的JSON数组展开,每行对应数组里的一个元素及其price值。
内容的提问来源于stack exchange,提问作者Jerry Sweet
相关产品推荐
相关产品推荐

