首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PostgreSQL 8.4中将列数据类型从字符更改为数字

如何在PostgreSQL 8.4中将列数据类型从字符更改为数字
EN

Stack Overflow用户
提问于 2011-10-07 13:25:51
回答 3查看 231.1K关注 0票数 140

我正在使用以下查询:

代码语言:javascript
复制
ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0); 

要将列的数据类型从character(20)更改为numeric(10,0),但我得到了错误:

不能将代码列“

”强制转换为数字

类型

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-07 13:33:33

您可以尝试使用USING

可选的USING子句指定如何从旧数据类型计算新列值;如果省略,则默认转换与从旧数据类型转换为新数据类型的赋值转换相同。如果没有从旧类型转换为新类型的隐式类型或赋值类型,则必须提供USING子句。

所以这可能会起作用(取决于你的数据):

代码语言:javascript
复制
alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);

如果code中有任何内容不能转换为numeric,则此操作将失败;如果使用失败,则必须在更改列类型之前手动清除非numeric数据。

票数 249
EN

Stack Overflow用户

发布于 2017-08-10 18:11:32

如果VARCHAR列包含空字符串(您可能还记得,这与PostgreSQL的NULL不同),则必须在以下行中使用某些内容来设置默认值:

代码语言:javascript
复制
ALTER TABLE presales ALTER COLUMN code TYPE NUMERIC(10,0)
            USING COALESCE(NULLIF(code, '')::NUMERIC, 0);

(在this answer的帮助下找到)

票数 7
EN

Stack Overflow用户

发布于 2020-08-12 08:20:19

步骤1:根据需要添加新的整型或数值型列

第2步:将数据从varchar列填充到数字列

第3步:删除varchar列

第4步:根据旧的varchar列更改新的数字列名

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7683359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档