在我的表中,我有名为 zip 的超级类型列。我认为列包含字典,它不是有效的 json。如何将值提取为单独的列。我的意思是 zip.zip4、zip.zip5
我尝试使用,
JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(zip), 'zip4')
但它不是有效的 JSON,首先我必须删除括号 [],但类型是 super 所以我不能这样做。
带有数据的代码:
with cte as(
select JSON_PARSE('[{"zip1":"07192","zip2":""}]') as zip
union all
select JSON_PARSE('[{"zip1":"09102","zip2":"53"}]') as zip
)
select * from cte;
首先,将数据作为图像发布是一种不好的形式。请不要这样做。
您的 JSON 完全有效。您只需将一个数组作为 JSON 的顶级元素即可。
只要这些数组始终只有 1 个元素,那么以下内容将解析该数据(根据您的示例代码)。引用此数据时请注意“[0]”,因为它索引这些数组的第一个元素。
with cte as(
select JSON_PARSE('[{"zip1":"07192","zip2":""}]') as zip
union all
select JSON_PARSE('[{"zip1":"09102","zip2":"53"}]') as zip
)
select zip[0]."zip1" as zip1, zip[0]."zip2" as zip2 from cte;