使用PostgreSQL,将一个
显然,我希望通过将旧的整数数据转换为字符串来保留数据。
integer
列类型迁移到string
列类型的命令是什么?显然,我希望通过将旧的整数数据转换为字符串来保留数据。
integer
列类型迁移到string
列类型的命令是什么?INTEGER
转换为CHARACTER VARYING
,只需要使用ALTER TABLE
查询更改列类型即可:
PostgreSQL 9.3 Schema Setup:
CREATE TABLE tbl (col INT);
INSERT INTO tbl VALUES (1), (10), (100);
ALTER TABLE tbl ALTER COLUMN col TYPE CHARACTER VARYING(10);
查询 1:
SELECT col, pg_typeof(col) FROM tbl
结果:
| col | pg_typeof |
|-----|-------------------|
| 1 | character varying |
| 10 | character varying |
| 100 | character varying |
int
类型更改为 character varying
类型,并且该列是一个外键约束的目标,那么在运行本答案中的 ALTER TABLE
语句之前,你必须先删除外键约束。你还需要修改引用原始列的列的类型,然后重新创建外键约束。 - Jeremy我建议采用以下四个步骤:
update myTable set temp=cast(intColumn as text)
,有关更多有趣的数字->字符串转换,请参见http://www.postgresql.org/docs/9.3/static/functions-formatting.html确保temp中的所有内容看起来都符合您的要求。
这假定您可以在没有客户端连接的情况下执行操作;离线。如果您需要在在线表中进行此(激烈的)更改,请考虑设置具有实时更新触发器的新表,然后在原子操作中切换到新表。请参见ALTER TABLE without locking the table?。
TO_CHAR
函数吗? - wallyk