我想创建一个包含以下查询的表:
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
类型?
答案 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