0

我有一个 CSV,其中包含存储为字符串的数字示例:加载时 1,200 存储为VARCHAR

我想将这些存储为整数。因此测试了以下内容;

update data
set stringy_number = replace (stringy_number,',','')::integer 

这将运行并,从数字中删除,但不会更改字符类型。然后我尝试了;

update data
set stringy_number::integer = replace (stringy_number,',','')::integer 

这引发了语法错误。此时我切换到下面的工作,但我不明白为什么我不能设置数据类型和更新

alter table data
alter column stringy_number type integer using replace(stringy_number,',','')::integer;
4

1 回答 1

0

update作用于价值观。您可以从一种数据类型转换为另一种数据类型,但结果仍会转换为基础列类型。

--> 您可以在文本列中保存“数字”,因为将数字转换为文本很容易。您无法将字母保存在数字列中,因为无法(轻松)完成转换。

alter column适用于整个列类型。更改类型时,您可以提供自定义转换方法,允许旧数据匹配新数据类型。

于 2019-04-15T13:21:30.520 回答