更新表中的列

时间:2012-05-17 13:13:39

标签: sql-server-2008 sql-server-2005

我需要更新一个int数据类型的表中的列,但是用于更新的其他表的值是nvarchar。 如果是这样,请告诉我。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果nvarchar列中的所有数据都是数字,那么,您应该能够:

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

现在,您还可以输入逻辑来处理带有ISNUMERIC()约束的非数字数据。

我看到aF打败了我。

答案 2 :(得分: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