将以下命令输入到 PostgreSQL 交互式终端中会导致错误:
ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);
如何正确地更改列的数据类型?
将以下命令输入到 PostgreSQL 交互式终端中会导致错误:
ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);
如何正确地更改列的数据类型?
参见此处文档:http://www.postgresql.org/docs/current/interactive/sql-altertable.html
ALTER TABLE tbl_name ALTER COLUMN col_name TYPE varchar (11);
ALTER TABLE tbl_name ALTER COLUMN col_name TYPE integer USING (NULLIF(col_name, '')::integer);
很酷 @derek-kromm,你的回答被接受并且正确,但是我在想我们是否需要修改不止一列。这里是我们可以这样做的方法:
ALTER TABLE tbl_name
ALTER COLUMN col_name TYPE varchar (11),
ALTER COLUMN col_name2 TYPE varchar (11),
ALTER COLUMN col_name3 TYPE varchar (11);
干杯!! 简单读,简单写
ALTER TABLE tbl_name ALTER COLUMN col_name TYPE integer USING col_name::integer;
。 - Nobunullif
表达式结合使用,特别是如果您已经有一个在您要更改的字段/列上具有空值的记录。在我的情况下,我尝试将列类型从varchar
更改为uuid
,但我有一个希望更改的字段中的空值。因此,我收到了无效的输入语法错误。为了解决这种情况,我将alter语句与以下nullif
表达式相结合:alter table user alter column branch_id type uuid using (nullif(branch_id,''))::uuid;
- yaurituxcol_name::text::real;
- undefined