首页 > 解决方案 > 如何从 SQL 中提取 JSON 值,其中列值有时为空

问题描述

我有一个包含“sometimesjson”列的表,其中有时包含这样的值:

[{"id":111,"nam":"PROVIDER_this_one","qty":null}]

有时该字段完全为空,不仅仅是“[]”,而是完全为空/空字段。

所以我尝试用这个返回“PROVIDER_this_one”,但是错误......

CASE WHEN JSON_VALID(sometimesjson) 
            THEN 
            JSON_EXTRACT(sometimesjson, '$.nam') 
            AS 'FROMJSON' 
             ELSE null  

有任何想法吗 ?

标签: sqlmariadbmariasql

解决方案


我想到了。我猜是因为 json 值实际上是一个数组,所以我为该表字段值数组中的每个值调用“nam”的正确方法是...... '$[*].nam'而不是 '$.nam'它现在正在与...一起工作

    CASE WHEN JSON_VALID(sometimesjson) 
            THEN 
            JSON_EXTRACT(sometimesjson, '$[*].nam') 
            AS 'FROMJSON' 
             ELSE null  

推荐阅读