Postgres将字符视为整数

时间:2017-12-01 06:36:43

标签: sql postgresql pgadmin

我在数据类型character varying的关系模式中有一列。虽然列是character varying,但我一直在插入integer类型的数据,并且在我实际需要输入字符变化类型的数据之前没有意识到错误。这是我得到的错误

insert into my_table(bad_column) values ('bad column');  

Error: invalid input syntax for integer: "bad column".

可能是什么问题?我通过运行下面的代码确认了列的数据类型,它实际上返回了字符变化

select pg_typeof(bad_column) FROM my_table limit 10 

1 个答案:

答案 0 :(得分:1)

您应该检查表定义是否有检查约束,例如

create table test(bad_column varchar check (bad_column::int > 0));
insert into test (bad_column) values ('a text');

ERROR:  invalid input syntax for integer: "a text"

另一个选项是在触发器中有一个转换为整数的列。

这两种情况都是比较混乱的解决方案,您应该将列的类型更改为整数。

相关问题