Удалить неверные данные из столбца VarChar - PullRequest
1 голос
/ 23 июня 2009

У меня есть база данных со столбцом типа VarChar, внутри которого находятся целые числа (которые я хочу сохранить) и разные нечисловые значения (которые я хочу удалить). Если я изменю таблицу и добавлю новый целочисленный столбец, как я могу скопировать только целые числа в новый целочисленный столбец?

Ответы [ 3 ]

5 голосов
/ 23 июня 2009

Я бы дал этому шанс (будет работать с MSSQL, не уверен в других системах баз данных) ...

update MyTable
set    MyNewIntField = cast(MyOldVarcharField as int)
where  isnumeric(MyOldVarcharField) = 1
1 голос
/ 23 июня 2009

это должно сделать это для вас, если вы используете MS SQL:

update mytable set new_column = old_column where isnumeric(old_column) = 1
0 голосов
/ 24 июня 2009

Вы потерпите неудачу, если попытаетесь поместить десятичные данные в столбец целых чисел.

У вас есть 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...