【问题标题】:How to alter a column's data type in a PostgreSQL table?如何更改 PostgreSQL 表中列的数据类型?
【发布时间】:2011-11-02 00:53:33
【问题描述】:

在 PostgreSQL 交互式终端中输入以下命令会导致错误:

ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);

更改列数据类型的正确命令是什么?

【问题讨论】:

    标签: sql postgresql psql alter-table alter-column


    【解决方案1】:

    在此处查看文档: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 col_name::integer;
    • @Nobu 为什么我们必须在some cases 中这样做?这些情况是什么?
    • @Darth.Vader 当列中已经存在无法自动转换的数据时,您可能需要执行此操作。
    • 另一个转换示例:我有一个 jsonb 列,其中包含需要转换为文本的现有数据。
    【解决方案2】:

    如果列中已经存在数据,您应该这样做:

    ALTER TABLE tbl_name ALTER COLUMN col_name TYPE integer USING col_name::integer;
    

    正如 @nobu 和 @jonathan-porter 在 cmets 中对 @derek-kromm 的回答所指出的那样,有点神秘。

    【讨论】:

      【解决方案3】:

      酷@derek-kromm,您的回答已被接受且正确,但我想知道我们是否需要alter 超过专栏。我们可以这样做。

      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);
      

      Documentation

      干杯!!读简单写简单

      【讨论】:

        猜你喜欢
        • 2021-07-26
        • 2021-06-16
        • 2012-12-16
        • 1970-01-01
        • 2012-02-20
        • 2012-06-12
        • 2018-05-28
        • 1970-01-01
        • 2013-09-12
        相关资源
        最近更新 更多