将列类型从文本更改为整数

Change column type from text to integer

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

我试着用下面的脚本来做

ALTER TABLE table ALTER COLUMN column TYPE integer

显然我得到了一个错误。

但是,如果我以前的值类似于 "Word1""Word2",现在我想将它们保持为 01[=,我该如何修改我的脚本17=]

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

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

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

如果您的列包含 non-numeric 个值,请尝试以下方法:

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

DEMO