如何在Amazon Redshift中提取JSON列内的指定值?
提取JSON数组内的目标值
针对你的需求,结合AWS Athena(基于Presto)的JSON处理能力,直接使用JSON_EXTRACT_SCALAR函数配合路径表达式即可提取目标内容:
修改后的查询语句
SELECT CAST(employee_id AS INT) AS employee_id, employee_email, gender, JSON_EXTRACT_SCALAR(custom_fields_json, '$.efcustom_text_userid[0]') AS extracted_userid FROM xxxxxx_employee WHERE employee_id IS NOT NULL ORDER BY employee_id DESC
核心逻辑说明
JSON_EXTRACT_SCALAR:该函数会直接提取JSON中的标量值(字符串、数字等),返回结果不带引号,完全匹配你的需求。- 路径
$.efcustom_text_userid[0]:$代表整个JSON对象.efcustom_text_userid定位到目标键[0]取该键对应数组的第一个元素(你的场景中数组仅包含单个元素)
异常处理(可选)
如果存在JSON格式不规范、键不存在或数组为空的情况,可以用COALESCE设置默认值:
SELECT CAST(employee_id AS INT) AS employee_id, employee_email, gender, COALESCE(JSON_EXTRACT_SCALAR(custom_fields_json, '$.efcustom_text_userid[0]'), '无数据') AS extracted_userid FROM xxxxxx_employee WHERE employee_id IS NOT NULL ORDER BY employee_id DESC
内容的提问来源于stack exchange,提问作者Sandeep Sharma
相关产品推荐
相关产品推荐

