PostgreSQL 9.3:将文本列迁移到macaddr类型

时间:2014-11-04 14:24:20

标签: postgresql mac-address

我有一个表格,其中文本列代表MAC地址,但我想使用macaddr类型。所以,我试过了:

alter table mytable alter column mac_column type macaddr;

得到了这个错误

ERROR:  column "mac_column" cannot be cast automatically to type macaddr
HINT:  Specify a USING expression to perform the conversion.

但我不知道使用什么作为USING表达式:

alter table mytable alter column mac_column type macaddr using(????????)

我应该使用什么作为USING表达式?

非常感谢提前

1 个答案:

答案 0 :(得分:1)

您不能简单地更改数据类型,因为列中已存在数据。由于数据类型为String,尽管您输入了macaddr的有效字符串表示形式,但PostgreSQL不能将其视为macaddr。现在,正如PostgreSQL建议你可以使用'USING'表达式将数据转换为macaddr

ALTER TABLE mytable ALTER COLUMN mac_column TYPE macaddr USING(mac_column::macaddr)