Postgresql Postgres创建表为SELECT,列类型未知

Postgresql Postgres创建表为SELECT,列类型未知,postgresql,types,casting,create-table,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 但博士后抱怨说: 如何将其指定为char类型?您需要显式强制转换列,如下所示: '0.0.0.0'::INET as IP, 您应该指定类型,使用“0.0.0.0”::文本作为IP,至少因为Pos

我想使用以下查询创建一个表:

create table something as
select 
      other_id, 
      other_title, 
      '0.0.0.0' as IP, 
      1 as used 
from
      other_table
但博士后抱怨说:


如何将其指定为
char
类型?

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

'0.0.0.0'::INET as IP,

您应该指定类型,使用“0.0.0.0”::文本作为IP

,至少因为Postgres 9.4,这不会引发
异常
,只是一个
警告
。如果没有为字符串文字指定类型,则仍然会创建表,其中的列的数据类型为
unknown

第9.4页的数字小提琴

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

小提琴

用(详细解释)介绍


而类型
未知
现在已被标记为伪类型

或者::text,如果您不想将其作为真正的IP进行处理
'0.0.0.0'::INET as IP,