PostgreSQL从TEXT迁移到INTEGER,现有数据可以为null

6pp0gazn  于 2023-05-06  发布在  PostgreSQL
关注(0)|答案(1)|浏览(146)

我尝试在PostgreSQL数据库中执行alter table column从TEXTINTEGER的更改,如下所示:

ALTER TABLE analyzer_parser_event
ALTER COLUMN error_id TYPE INTEGER USING (error_id::integer);

问题是我已经有了error_id可以是NULL的现有数据。这将导致错误:

Statement  : ALTER TABLE analyzer_parser_event
    ALTER COLUMN error_id TYPE INTEGER USING (error_id::integer)

Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type integer: "NULL"

我试着用NULLIF指令,但它没有帮助我。
如何避免这个错误?

ulmd4ohb

ulmd4ohb1#

您可以尝试确定error_id是否为数值

select * from analyzer_parser_event where not textregexeq(error_id,'^[[:digit:]]+(\.[[:digit:]]+)?$');

评估结果,然后只需更新记录

update analyzer_parser_event set error_id='0' where not textregexeq(error_id,'^[[:digit:]]+(\.[[:digit:]]+)?$');

你好,亚历杭德罗

相关问题