2012-05-17 2 views
1

Мне нужно обновить столбец в таблице, которая имеет тип данных int, но значения из другой таблицы, которую я использовал для обновления, - nvarchar. Это достигается, если да, пожалуйста, дайте мне знать.Обновить столбец в таблице

+1

Значения из чисел столбцов nvarchar? –

+0

Это могут быть цифры или символ. Если это число, чем вставить его с тем же, но если это символ, то как можно его достичь. – Guru

ответ

2

Это может быть что-то вроде этого:

update tablename 
set t.column = convert(int, t2.column) 
from tablename t 
inner join secondtablename t2 on t.column = t2.column 
where ISNUMERIC(t2.column) = 1 
+0

nitpick: set t.column должен быть просто столбцом. не может использовать псевдонимы в имени столбца для набора. – Rob

+1

@Rob [Вы можете использовать псевдоним в предложении set] (http://data.stackexchange.com/stackoverflow/query/70522/you-can-use-alias-in-the-set-clause) –

+0

ну, я 'буду. Это что-то новое? Я уверен, что я пробовал это раньше и получил ошибку ... – Rob

0

Если все ваши данные в столбце NVARCHAR являются числами, то, вы должны быть в состоянии сделать:

update ATable 
set intColumn = cast(o.chardata as int) 
from ATable a 
join OtherTable o on a.tableid=o.tableid 

сейчас, вы также можете поместить в логику для обработки не числовых данных с ограничением ISNUMERIC().

Я вижу, как я избил меня до удара.

0
CREATE TABLE #t 
(
    ID int IDENTITY(1,1), 
    Column1 int 
) 

CREATE TABLE #t1 
(
    ID int IDENTITY(1,1), 
    Column2 Varchar(50) 
) 

INSERT INTO #t(Column1)VALUES(1) 
INSERT INTO #t(Column1)VALUES(2) 

INSERT into #t1(Column2)values('Alpha Numeric') 
INSERT into #t1(Column2)values('12') 

UPDATE t 
SET t.Column1 = t1.Column2 
FROM #t t 
INNER join #t1 t1 on t.ID = t1.ID 
Where ISNUMERIC(t1.Column2) = 1 

select * FROM #t 

DROP TABLE #t 
DROP TABLE #t1 
Смежные вопросы