Redshift中Super类型字段转字符串及提取JSON值求助
解决方案:从Redshift Super类型字段提取JSON属性值
你的Super字段存储的是JSON数组[{"Title":"First Last"}],不需要用json_parse(这个函数是把字符串转成Super类型,而你的字段已经是Super类型,所以会报错),直接通过Super类型的导航语法提取即可,步骤如下:
开启大小写敏感标识符(适配首字母大写的
Title键名)
执行语句开启大小写敏感:SET enable_case_sensitive_identifier = TRUE;直接导航提取目标值
先通过[0]获取数组的第一个元素,再通过.Title访问对应属性值:SELECT mycolumn[0]."Title" FROM mytable;重置大小写敏感设置(可选)
操作完成后可重置回默认设置:RESET enable_case_sensitive_identifier;
替代方案(无需修改全局大小写设置)
如果不想调整全局配置,也可以用json_extract_path_text结合json_serialize提取:
SELECT json_extract_path_text(json_serialize(mycolumn[0]), 'Title') FROM mytable;
关于之前转换为空的说明
直接CAST(mycolumn AS VARCHAR)返回空是因为Redshift的Super类型不能直接转成VARCHAR,需要先用json_serialize将Super序列化为JSON字符串:
SELECT json_serialize(mycolumn) FROM mytable;
这会返回完整的JSON字符串[{"Title":"First Last"}],但直接导航Super类型是提取值的更高效方式。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

