我使用的是 8.1 版的 postgres。我想使用字符串来排列和取消嵌套函数。8.1 不支持 unnest,所以我使用通过 Google 和 stackoverflow 找到的代码创建了它。
我的错误信息如下: 错误:“未嵌套”列的类型为 text[],但表达式的类型为 text 提示:您需要重写或强制转换表达式。
我包括的过程有多个步骤。但是,当我设置表/列时,我确实将它们都指定为“文本 []”,并且我不理解错误消息中“表达式是文本类型”的部分。
创建“临时”表
代码:
CREATE TEMP TABLE temp
(words text[])
\g
创建表
创建“茶几”</p>
代码:
CREATE TABLE endtable
(unnested text[])
\g
创建表
将字符串应用于“Oh My”上的数组函数到“temp”表中
代码:
INSERT INTO temp(words)
SELECT STRING_TO_ARRAY('Oh My',' ')
\g
插入 0 1
创建未嵌套函数
代码:
CREATE OR REPLACE FUNCTION UNNEST(anyarray) RETURNS SETOF ANYELEMENT
LANGUAGE SQL AS
$$
SELECT $1[i] FROM GENERATE_SERIES(ARRAY_LOWER($1,1), ARRAY_UPPER($1,1)) AS i;
$$;
创建函数
将 unnest 函数应用到“endtable”中
错误代码:
INSERT INTO endtable(unnested)
SELECT unnest(words)
FROM temp
\g
ERROR: column "unnested" is of type text[] but expression is of type text HINT: You will need to rewrite or cast the expression.
提前感谢您提供的任何帮助或解释。