Postgres 8.1错误消息(数据类型)

时间:2013-12-01 01:20:13

标签: arrays postgresql types postgresql-8.1

我正在使用postgres版本8.1。我想使用字符串数组和不需要的函数。 8.1不支持unfst,因此我使用通过Google和stackoverflow找到的代码创建了它。

我的错误信息如下: 错误:“unnested”列的类型为text [],但表达式的类型为text 提示:您需要重写或转换表达式。

我要包含的流程有多个步骤。但是,当我设置我的表格/列时,我确实将它们指定为“text []”&我不明白错误消息中“表达式是文本类型”的部分。

创建'temp'表

代码:

CREATE TEMP TABLE temp
(words text[])
\g

创建表

创建'结束表'

代码:

CREATE TABLE endtable
(unnested text[])
\g

创建表

将'Oh My'中的数组函数应用于'temp'表

代码:

INSERT INTO temp(words)
SELECT STRING_TO_ARRAY('Oh My',' ')
\g

INSERT 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;
$$;

创建功能

将不需要的功能应用于'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.

提前感谢您提供的任何帮助或解释。

1 个答案:

答案 0 :(得分:2)

您的表格列必须是text类型,而不是数组类型text[]

CREATE TABLE endtable (unnested text);