尝试将 pgAdmin 中的列数据类型从 varchar 转换为整数时遇到问题(SQL 状态:22P02)

Troubled trying to convert a column data type in pgAdmin from varchar to integer (SQL state: 22P02)

我只是想通过 运行 这段 Postgres 脚本将数据类型为 character varying 的列转换为 integer

ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);

我得到这个错误:

ERROR: invalid input syntax for integer: "XX" SQL state: 22P02

有人可以帮我解决这个问题吗?

根据您得到的错误,您似乎在 XX 中有一些值无法转换为 integer。在发出 alter table.

之前,您需要更正这些值

使用此查询查找不正确的值:

select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';

!~NOT 正则表达式匹配。正则表达式用 ^ 锚定到值的开头,用 -{0,1} 解释一个可选的减号,它匹配零个或一个连字符,然后确保剩余的字符到值的末尾都是带\d+$.

的数字

任何不匹配此模式的 XX 值都将被检索,您可以通过更新 table 或修改 using 来弄清楚如何处理它们alter table.

的一部分