Snowflake中拆分VARCHAR类型数组列的方法求助
解决方法
FLATTEN函数仅支持数组类型输入,你的Values列是VARCHAR类型,必须先将字符串格式的数组转换为真正的数组类型,才能进行拆分操作。
方法1:用PARSE_JSON直接解析(推荐,适用于标准JSON格式)
你的[1,2]是合法的JSON数组格式,PARSE_JSON可以直接将其转换为数组类型,再配合FLATTEN拆分:
SELECT temp.NAME, t.value FROM temp, TABLE(FLATTEN(PARSE_JSON(temp.Values))) AS t;
方法2:手动处理字符串(适用于非标准格式场景)
如果字符串格式不严格符合JSON规范,可以手动去除首尾括号后按逗号拆分:
SELECT temp.NAME, TRY_CAST(t.value AS INT) AS value -- 可选:转为数值类型 FROM temp, TABLE(FLATTEN(SPLIT(TRIM(temp.Values, '[]'), ','))) AS t;
TRIM(temp.Values, '[]'):去掉字符串首尾的[和],得到1,2SPLIT(..., ','):按逗号拆分字符串,生成数组['1','2']TRY_CAST:可选,将拆分后的字符串转为数值类型,避免结果是字符串格式
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

