如何从 SQL 中提取 JSON 值,其中列值有时为空

Posted

技术标签:

【中文标题】如何从 SQL 中提取 JSON 值,其中列值有时为空【英文标题】:How to extract JSON value from SQL where where column values sometimes empty 【发布时间】:2021-05-21 18:12:12 【问题描述】:

我有一个表,其列 '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  

有什么想法吗?

【问题讨论】:

错误,错误,我没有看到错误也许你可以和我们分享你的 我想通了。我猜是因为 json 实际上是数组,所以我为该表字段中的数组中的每个值调用“nam”的正确方法是...... '$[*].nam' 而不是 '$.nam' 它是现在工作。 【参考方案1】:

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

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

【讨论】:

以上是关于如何从 SQL 中提取 JSON 值,其中列值有时为空的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL 中的列值中提取特定部分(Redshift 平台)

如何从SQL中的列值中提取特定部分(Redshift平台)

如何从json字符串中提取值?

JSON格式有时不一样,如何从不同的JSON格式中提取信息?

如何从 MySQL 中的数字键嵌套 JSON 字段中提取值

根据列值从熊猫数据框中提取行