Json 从亚马逊 redshift 的列中提取

问题描述 投票:0回答:1

我的询问:

SELECT 
    CAST(employee_id AS INT) AS employee_id, 
    employee_email, 
    gender,
    custom_fields_json
FROM 
    xxxxxx_employee
WHERE 
    employee_id IS NOT NULL
ORDER BY 
    employee_id DESC

custom_fields_json 的值格式为:

{"efcustom_text_userid":["XXXXXXX_00000000"]}

我想提取XXXXXXX_00000000。

我该怎么做?

尝试在aws网站上阅读json摘录,但没有用,聊天gpt不知道尝试搜索论坛,但没有用。

amazon-redshift json-extract
1个回答
0
投票

要记住的一个重要区别是,custom_fields_json 的值是否属于某种文本类型,或者是否存储为 SUPER 值。 我猜测这个值是基于问题的文本,但尚不清楚。您确实应该提供您所引用的表的 DDL 以及这些帖子中的查询。

因此假设这是文本并且该文本始终采用这种格式,您可以通过

获取该值
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT(JSON_EXTRACT_PATH_TEXT(custom_fields_json,'efcustom_text_userid',),0)
FROM 
    xxxxxx_employee
WHERE 
    employee_id IS NOT NULL;

这首先提取键 efcustom_text_userid 的值。然后提取内部函数返回的数组的第 0 个元素。

如果您需要比固定文本解析更智能的东西,请根据这一更高要求的约束进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.