PostgreSql数据库中表字段由类型varchar改变成整型
2014-11-11 15:45
681 查看
今天同事在修改一个表的字段类型时,遇到了一个错误,如下:
错误: 字段 "age" 不能自动转换成类型 integer
HINT: 指定一个USING表达式来执行转换
以上只是我自己设置的一个环境,实际字段age不太会设置成varchar类型的。只是想说明一个字符串类型的如何转换成整型。
首先需要注意这个字段下是否有数据,如果有数据基本上是不太可能转换成整型的除非都是数字字符。
再通过修改类型的语句:
ALTER TABLE dgb_test
alter COLUMN age set data TYPE int4,
ALTER COLUMN age SET DEFAULT 0;
报了之前那个错误,一般情况下修改类型都是这样的,看hint提示,需要用using表达式,查看文档后,当需要被修改类型的字段设置了默认值,
换句话说这个字段上有约束,那么我这边的默认值是null,这个在建表的时候就设置为null了,那么null是无法转换成整型的,测试select cast(null as integer);输出还是null。
那么需要如何处理,我这边的处理方式是先将这个字段的默认值改为0,不然会报:错误: 字段 "age" 的默认值不能转换成类型 integer
然后通过语句
ALTER TABLE dgb_test
alter COLUMN age set data TYPE int4 using 0 ,
ALTER COLUMN age SET DEFAULT 0;
修改。using不带的话就报最初提到的那个错误,using 0 这个地方可以有多种写法,如果表中有字段是整型的那么直接 using age1,如果表中没有的直接就写个0即可,只要是整型的就可以。
当然,不适用我这个方法也是可以的,因为可以重新建表,或者先删除这个字段再创建,只是有时候表中数据两大时就不太方便了。
错误: 字段 "age" 不能自动转换成类型 integer
HINT: 指定一个USING表达式来执行转换
以上只是我自己设置的一个环境,实际字段age不太会设置成varchar类型的。只是想说明一个字符串类型的如何转换成整型。
首先需要注意这个字段下是否有数据,如果有数据基本上是不太可能转换成整型的除非都是数字字符。
再通过修改类型的语句:
ALTER TABLE dgb_test
alter COLUMN age set data TYPE int4,
ALTER COLUMN age SET DEFAULT 0;
报了之前那个错误,一般情况下修改类型都是这样的,看hint提示,需要用using表达式,查看文档后,当需要被修改类型的字段设置了默认值,
换句话说这个字段上有约束,那么我这边的默认值是null,这个在建表的时候就设置为null了,那么null是无法转换成整型的,测试select cast(null as integer);输出还是null。
那么需要如何处理,我这边的处理方式是先将这个字段的默认值改为0,不然会报:错误: 字段 "age" 的默认值不能转换成类型 integer
然后通过语句
ALTER TABLE dgb_test
alter COLUMN age set data TYPE int4 using 0 ,
ALTER COLUMN age SET DEFAULT 0;
修改。using不带的话就报最初提到的那个错误,using 0 这个地方可以有多种写法,如果表中有字段是整型的那么直接 using age1,如果表中没有的直接就写个0即可,只要是整型的就可以。
当然,不适用我这个方法也是可以的,因为可以重新建表,或者先删除这个字段再创建,只是有时候表中数据两大时就不太方便了。
相关文章推荐
- 关于数据库Varchar字段类型长度设计问题(转载)
- 数据库字段类型中char和Varchar区别
- 关于数据库Varchar字段类型长度设计问题
- 数据库存储日期的字段类型到底应该用VARCHAR 还是datetime
- postgresql将表中的字段由varchar类型改为int类型
- 关于数据库Varchar字段类型长度设计问题
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- Mybatis插入postgresql数据库中类型为UUID的字段
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
- 关于数据库Varchar字段类型长度设计问题
- 数据库中存储日期的字段类型到底应该用varchar还是datetime ?
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 关于数据库Varchar字段类型长度设计问题
- PB对数据库字段varchar类型255的限制问题
- CHAR,VARCHAR,NVARCHAR,数据库字段类型
- 关于数据库Varchar字段类型长度设计问题
- 关于数据库Varchar字段类型长度设计问题
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
- 数据库中的char类型的字段与number,varchar类型字段查询