如何使用JSON_QUERY或JSON_VALUE从SQL的JSON列提取所有公司名称
提取JSON中所有公司名称的SQL写法
你给出的JSON根节点下的Company是数组类型,无法直接通过单次JSON_VALUE拿到所有元素,需要先拆解数组再提取字段,以下是可直接运行的SQL(适配SQL Server 2016+,符合你要求的JSON_VALUE使用规范):
SELECT JSON_VALUE(company_item.value, '$.Name') AS company_name FROM jsontable CROSS APPLY OPENJSON(jsoncol, '$.Company') AS company_item;
语句说明
OPENJSON(jsoncol, '$.Company'):定位到jsoncol字段里的Company数组,把数组里的每一个对象拆成单独的数据行JSON_VALUE(company_item.value, '$.Name'):从拆出来的单个公司对象中,提取Name键对应的字符串值,也就是你需要的公司名称- 语句会自动处理JSON格式里的括号、双引号转义,不需要额外做格式处理
如果需要同时提取公司ID、地址信息,可以直接扩展字段:
SELECT JSON_VALUE(company_item.value, '$.Name') AS company_name, JSON_VALUE(company_item.value, '$.Id') AS company_id, JSON_VALUE(company_item.value, '$.Info.Address') AS company_address FROM jsontable CROSS APPLY OPENJSON(jsoncol, '$.Company') AS company_item;
执行后会返回两行结果:
- company_name为
ABC,对应id 999、地址123 - company_name为
XYZ,对应id 888、地址456
内容的提问来源于stack exchange,提问作者Itsme
相关产品推荐
相关产品推荐

