【问题标题】:Postgres 8.1 error message (data type)Postgres 8.1 错误信息(数据类型)
【发布时间】:2013-12-16 22:39:00
【问题描述】:

我使用的是 8.1 版的 postgres。我想使用字符串来排列和取消嵌套函数。 8.1 不支持 unnest,所以我使用通过 Google 和 stackoverflow 找到的代码创建了它。

我的错误信息如下: 错误:列“未嵌套”的类型为文本 [],但表达式的类型为文本 提示:您需要重写或强制转换表达式。

我所包含的流程包含多个步骤。但是,当我设置表格/列时,我确实将它们都指定为“文本 []”,并且我不理解错误消息中“表达式属于文本类型”的部分。

创建“临时”表

代码:

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

插入 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.

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

【问题讨论】:

  • 顺便说一句:pg-8.1 非常旧了。您是否考虑过升级?
  • 我同意它已经很老了,但是我没有升级的选择。如果可以的话,请相信我!

标签: arrays postgresql types postgresql-8.1


【解决方案1】:

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

CREATE TABLE endtable (unnested <b>text</b>);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2017-06-22
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多