You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中如何优雅去除FLATTEN转换字符串列表后的引号

问题:Snowflake中将字符串字面量列表转成行数据时,VALUE列带引号的优化实现

我想在Snowflake里把字符串字面量列表转换成行数据,查到用FLATTEN()函数可以实现,但执行以下SQL后,返回的VALUE列值带有引号:

select value from table(flatten(input => parse_json('["user1","user2"]')))

我目前用replace函数去除引号:

select replace(value, '"', '') 
from (
  select value 
  from table(flatten(input => parse_json('["user1","user2"]')))
)

但觉得这种方式不够优雅,有没有更优的实现方法?


优化方案

问题根源在于parse_json返回的是VARIANT类型,直接查询value时会保留JSON格式的引号。更优雅的方式是直接将VARIANT类型转换为字符串类型,无需依赖replace函数:

方法1:使用类型转换运算符::

select value::string as user_name
from table(flatten(input => parse_json('["user1","user2"]')))

方法2:使用VARCHAR()函数显式转换

select varchar(value) as user_name
from table(flatten(input => parse_json('["user1","user2"]')))

两种方式都能直接得到不带引号的字符串值,比replace更高效,也更符合Snowflake的类型处理规范。

内容的提问来源于stack exchange,提问作者jamiet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:34:50