Postgres CREATE TABLE AS SELECT具有未知列类型

时间:2013-12-10 09:51:05

标签: postgresql types casting create-table

我想创建一个包含以下查询的表:

create table something as
select 
      other_id, 
      other_title, 
      '0.0.0.0' as IP, 
      1 as used 
from
      other_table

但Postgres抱怨说:

column "ip" has type "unknown"

如何将其指定为char类型?

3 个答案:

答案 0 :(得分:5)

您需要显式转换列,如下所示:

'0.0.0.0'::INET as IP,

答案 1 :(得分:1)

至少从 Postgres 9.4 开始,这不会引发EXCEPTION,只会引发WARNING。无论如何,如果没有为字符串文字提供类型,则会创建一个数据类型为unknown的列:

dbfiddle for pg 9.4 here

Postgres 10 引入了更多有用的默认行为。除非明确强制转换,否则字符串文字将转换为默认数据类型text。因此,您不能再获得unknown类型的列:

dbfiddle here

引入this commit(详细说明)。

现在,类型unknown已被标记为伪类型。 Details in this commit.

答案 2 :(得分:0)

您应该指定类型,使用'0.0.0.0':: text AS IP