我只是尝试通过运行以下 Postgres 脚本将具有字符变化
数据类型的列转换为整数
:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
我收到此错误:
ERROR: invalid input syntax for integer: "XX" SQL state: 22P02
有人可以帮我解决这个问题吗?
最佳答案
根据您收到的错误,XX
中似乎有一些值无法转换为整数
。您需要在发出alter table
之前更正这些值。
使用此查询查找不正确的值:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
!~
是 NOT
正则表达式匹配。正则表达式使用 ^
锚定到值的开头,使用 -{0,1}
考虑可选的减号,它匹配零个或一个连字符,然后确保值末尾的剩余字符都是带有 \d+$
的数字。
任何与此模式不匹配的 XX
值都将被检索,您可以通过更新表或修改 using
来找出如何处理它们更改表
的一部分。
关于postgresql - 尝试将 pgAdmin 中的列数据类型从 varchar 转换为整数时遇到问题(SQL 状态 : 22P02),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63435855/