VarChar型の列を持つデータベースがあります。その中には、保持したい整数と削除したいその他の数値以外の値があります。テーブルを変更して新しい整数列を追加すると、整数だけを新しい整数列にコピーできますか?VarChar列から無効なデータを削除します。
1
A
答えて
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
小数を丸めるか、切り捨てることができが、このMSのSQLのですか? – Joseph