我有一个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;
答案 0 :(得分:0)
update
处理这些值。您可以将数据类型转换为另一数据类型,但结果仍将转换为基础列类型。
->您可以在文本列中保存一个“数字”,因为很容易将数字转换为文本。您不能在数字列中保存字母,因为无法(轻松)完成强制转换。
alter column
适用于整个列类型。更改类型时,您可以提供一种自定义转换方法,以允许旧数据与新数据类型匹配。