尝试将 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
.
的一部分
我只是想通过 运行 这段 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
.