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

Redshift中将逗号分隔值转多行报错:unnest语法错误求助

逗号分隔值转多行报错:unnest语法错误问题

你尝试用以下SQL将表中逗号分隔的data字段拆分为多行:

CREATE table a_table (
    id int,
    data varchar
); 

INSERT INTO a_table 
    VALUES (1, 'Apple,Orance'),
        (2, 'Apple,Grapes'),
        (3, 'Juice,Apple,Cucumber');
        
SELECT * FROM a_table;
        
SELECT id, unnest(string_to_array(data,','))
FROM a_table;

SELECT
    *,
    unnest(string_to_array(data, ','))
FROM
    a_table;

执行时出现错误:

ERROR:  syntax error at or near "unnest"
LINE 1: SELECT id, unnest(string_to_array(data,','))

问题原因

你的写法在PostgreSQL 9.3及更早版本中不被支持——旧版本不允许在SELECT列表中直接调用返回集合的函数(比如unnest),这类函数必须放到FROM子句中作为集合源使用。

正确写法

1. 隐式横向连接(兼容旧版本)

SELECT a.id, elem
FROM a_table a, unnest(string_to_array(a.data, ',')) elem;

2. 显式LATERAL JOIN(PostgreSQL 9.3+推荐)

这种写法逻辑更清晰,也支持更复杂的关联场景:

SELECT a.id, elem
FROM a_table a
LATERAL unnest(string_to_array(a.data, ',')) elem;

3. 保留原表所有列的拆分写法

如果需要同时获取原表全部字段和拆分后的元素:

SELECT a.*, elem
FROM a_table a
LATERAL unnest(string_to_array(a.data, ',')) elem;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:03:12