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

标签 postgresql ddl

我只是尝试通过运行以下 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/

相关文章:

mysql - ALTER TABLE 添加约束

postgresql - compose-for-postgresql 中的 Pl/python 和 Pl/r 扩展

PostgreSQL - 替换表列中特定字符的所有实例

sql - Postgres IF table.x > table.y

sql - PostgreSQL 中 varchar 列的索引长度

java - 使用 Hibernate 4 生成 DDL

mysql - 如何自动将 MySQL DDL 转换为 Oracle DDL?

django - postgres 不启动。 (涉及到 Django 和 Docker)

c++ - 无法编译测试 PostgreSQL 程序

mysql - SQL语法错误,找不到?