Sql server 2008 更新表中的列
我需要更新int数据类型的表中的一列,但用于更新的其他表中的值是nvarchar。Sql server 2008 更新表中的列,sql-server-2008,sql-server-2005,Sql Server 2008,Sql Server 2005,我需要更新int数据类型的表中的一列,但用于更新的其他表中的值是nvarchar。 如果达到了这一点,请让我知道。可能是这样的: 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 如果nvarchar列中的所有数据都是数字,则您应该
如果达到了这一点,请让我知道。可能是这样的:
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
如果nvarchar列中的所有数据都是数字,则您应该能够执行以下操作:
update ATable
set intColumn = cast(o.chardata as int)
from ATable a
join OtherTable o on a.tableid=o.tableid
现在,您还可以使用ISNUMERIC()约束放入逻辑来处理非数字数据
我看到aF打了我一拳。是来自nvarchar列编号的值吗?可能是数字或字符。如果它是一个数字,那么将其插入相同的字符,但如果它是一个字符,那么如何才能实现呢?挑剔:set t.column应该是column。不能在集合的列名中使用别名。@Rob好的,我会的。这是新的吗?我肯定我以前也试过,但却犯了一个错误…@Rob我不知道,我觉得没有理由使用它。一次只能更新一个表。我知道,如果尝试在语句的update部分中为表添加别名,则会出现错误。也许这就是我在想的错误?不知道。。
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