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

SQL兼容级别100无OPENJSON时提取JSON数组值转列方法

问题根因

之前调用JSON_Value(details, '$.name')返回null,核心原因有两点:

  • details列存储的是JSON数组结构,根节点不是单个JSON对象,直接使用$.name路径无法定位到属性,自然返回空值
  • 当前数据库兼容级别为100,不支持OPENJSON()函数,无法通过常规JSON表值函数拆解数组后做行转列处理。
适配低兼容级别的实现方案

已知测试项为固定枚举值(rtc、battery、connection、timer、provide、request),无需动态解析未知字段,可直接通过字符串匹配提取对应测试结果,完全兼容100兼容级别,无需调整数据库配置。

假设原表名为product_test,可直接执行以下查询:

SELECT 
    id,
    model,
    type,
    -- 提取rtc测试结果
    CASE 
        WHEN details LIKE '%"name":"rtc","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"rtc","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS rtc,
    -- 提取battery测试结果
    CASE 
        WHEN details LIKE '%"name":"battery","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"battery","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS battery,
    -- 提取connection测试结果
    CASE 
        WHEN details LIKE '%"name":"connection","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"connection","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS connection,
    -- 提取timer测试结果
    CASE 
        WHEN details LIKE '%"name":"timer","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"timer","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS timer,
    -- 提取provide测试结果
    CASE 
        WHEN details LIKE '%"name":"provide","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"provide","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS provide,
    -- 提取request测试结果
    CASE 
        WHEN details LIKE '%"name":"request","value":"pass"%' THEN 'pass'
        WHEN details LIKE '%"name":"request","value":"fail"%' THEN 'fail'
        ELSE NULL 
    END AS request
FROM product_test;
适配调整说明
  • 如果存储的JSON内容存在格式空格(如"name": "rtc"这类key、冒号、值之间带空格的写法,或是存在换行、缩进排版),可调整LIKE匹配规则适配,例如将固定匹配串改为'%"name"%"rtc"%"value"%"pass"%',即可忽略中间的格式字符完成匹配,避免因JSON排版差异导致匹配失败。
  • 若后续新增固定测试项,参照现有CASE WHEN模板新增对应列即可,无需修改其他逻辑
  • 产品未覆盖的测试项对应列会返回NULL,天然适配“不同产品测试项数量不一致”的场景。

内容的提问来源于stack exchange,提问作者Emelia Johansson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:27:22