我有一个包含VarChar类型列的数据库,其中包含整数(我想保留)和其他非数字值(我想要删除)。如果我更改表并添加新的整数列,如何只将整数复制到新的整数列?
答案 0 :(得分:5)
我试一试(将与MSSQL一起使用,不确定其他数据库系统)......
update MyTable
set MyNewIntField = cast(MyOldVarcharField as int)
where isnumeric(MyOldVarcharField) = 1
答案 1 :(得分:1)
如果您正在运行MS SQL,这应该为您执行:
update mytable set new_column = old_column where isnumeric(old_column) = 1
答案 2 :(得分:0)
如果你最终试图将十进制数据放入整数列,你将失败。
这里有2个选择
如果是整数,你只能接受数据:
update [table]
set [integer column] = [varchar column]
where isnumeric([varchar column])=1 and ([varchar column] not like '%.%')
或者你可以舍入或截断小数
--truncate
update [table]
set [integer column] = floor(cast([varchar column] as float))
where isnumeric([varchar column])=1
--round
update [table]
set [integer column] = round(cast([varchar column] as float),0)
where isnumeric([varchar column])=1