从VarChar列中删除无效数据

时间:2009-06-23 16:30:09

标签: sql types

我有一个包含VarChar类型列的数据库,其中包含整数(我想保留)和其他非数字值(我想要删除)。如果我更改表并添加新的整数列,如何只将整数复制到新的整数列?

3 个答案:

答案 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