2009-06-23 5 views
1

VarChar型の列を持つデータベースがあります。その中には、保持したい整数と削除したいその他の数値以外の値があります。テーブルを変更して新しい整数列を追加すると、整数だけを新しい整数列にコピーできますか?VarChar列から無効なデータを削除します。

+0

小数を丸めるか、切り捨てることができが、このMSのSQLのですか? – Joseph

答えて

5

私は(他のデータベースシステムについてはよく分からない、MSSQLで動作します)、この打撃を与えるだろう...

update MyTable 
set MyNewIntField = cast(MyOldVarcharField as int) 
where isnumeric(MyOldVarcharField) = 1 
+0

浮動小数点数を切り捨ててもかまわない限り、このメソッドは正常に動作します。 –

1

あなたがMS SQL実行している場合、これはあなたのためにそれを行う必要があります。

update mytable set new_column = old_column where isnumeric(old_column) = 1 
0

10進数のデータを整数列に入れようとすると、失敗します。

あなたはそれが全体の数字である場合は、データのみを受け入れることができ、ここで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