You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server 2019中从MercadoLibre API的JSON数据定位GTIN字段

在SQL Server 2019中不依赖数组索引提取JSON中的GTIN字段

你可以通过两种可靠的方法定位GTIN字段,完全摆脱对attributes数组元素顺序的依赖:

方法1:使用JSON_VALUE结合过滤路径

直接通过JSON路径表达式筛选出name为"GTIN"的数组元素,提取其value值:

SELECT 
    JSON_VALUE(YourJsonColumn, '$.attributes[?(@.name == "GTIN")].value') AS GTIN
FROM YourTable
  • 路径$.attributes[?(@.name == "GTIN")]会遍历整个attributes数组,自动匹配所有name属性等于"GTIN"的元素
  • 如果数组中存在多个GTIN元素,JSON_VALUE会返回第一个匹配的值

方法2:使用OPENJSON展开数组并筛选

如果需要处理多个GTIN匹配项,或者需要更灵活的字段处理,可以用OPENJSON将数组拆分为行数据后筛选:

SELECT 
    j.value AS GTIN
FROM YourTable
CROSS APPLY OPENJSON(YourJsonColumn, '$.attributes')
WITH (
    name NVARCHAR(100) '$.name',
    value NVARCHAR(100) '$.value'
) j
WHERE j.name = 'GTIN'
  • OPENJSON会把attributes数组的每个元素拆成一行,通过WITH子句映射出name和value字段
  • 用WHERE子句精准筛选name为"GTIN"的记录,若有多个匹配会返回所有结果;需单值的话可添加DISTINCT或TOP 1

额外提示

如果API返回的name值存在大小写差异(比如"gtin"或"Gtin"),可以在条件中统一大小写:

  • 方法1修改路径:$.attributes[?(@.name =~ /GTIN/i)].value(SQL Server支持正则匹配的i标志)
  • 方法2修改WHERE子句:WHERE LOWER(j.name) = 'gtin'

内容的提问来源于stack exchange,提问作者Juan Pablo Humani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:05:14