【问题标题】:Change column type from text to integer将列类型从文本更改为整数
【发布时间】:2020-08-31 09:52:35
【问题描述】:

我有类型为text 的列 我需要将列类型更改为整数。

我尝试用下面的脚本来做

ALTER TABLE table ALTER COLUMN column TYPE integer

显然我得到了一个错误。

但是如果我以前的值是 "Word1""Word2" 而现在我想保留它们像 01 一样,我该如何修改我的脚本

如果可能的话,如果此脚本在处理此脚本时将0 设置为所有行,我会很好。

【问题讨论】:

  • 如何将"Word1"/"Word2" 转换为01?逻辑是什么?
  • @GordonLinoff,当您需要在数据库中保留枚举时会发生这种情况,以前我们将其中一列保留为字符串,现在我们需要引入枚举

标签: sql postgresql alter-table


【解决方案1】:

如果您的列仅包含整数值,请尝试以下方式:

ALTER TABLE test ALTER COLUMN id  TYPE integer USING (id::integer);

如果您的列包含非数字值,请尝试以下方式:

ALTER TABLE test ALTER COLUMN id  TYPE integer USING (CASE
        WHEN id~E'^\\d+$' THEN
            CAST (id AS INTEGER)
        ELSE
            0
        END);

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多