2011-04-29 134 views
12

我想插入表格的所有行到另一个表,我也希望有一个nvarchar字段转换为bigint,但是当我使用convert(bigint, col1)的SQL Server显示错误:转换为nvarchar在SQL Server BIGINT 2008

Error converting data type nvarchar to bigint

我该如何解决这个问题?

+4

“我该如何解决这个问题? ” - 简单。删除无法转换为biginteger的数据 – 2011-04-29 06:09:55

+0

如何自动删除非数字数据...? – 2011-04-29 06:15:27

+2

没有魔杖,写入TSQL将其删除! – 2011-04-29 06:18:30

回答

20

你可以尝试使用ISNUMERIC,以确定那些确实数字行:

UPDATE dbo.YourTable 
SET BigIntColumn = CAST(NVarcharColumn AS BIGINT) 
WHERE ISNUMERIC(NVarcharColumn) = 1 

这将转换可转换这些行 - 其他需要进行手工处理。

+0

tnx ...这是我的回答... so tnx – 2011-04-29 06:38:01

+0

这将会失败,因为存储为字符串的小数:SELECT CAST('。1'AS BIGINT) WHERE ISNUMERIC('。1')= 1 – 2016-01-05 15:51:38

+0

只是为了增加BD的评论,char(36)和chars 43-46,48-57,92,128,160,全部评估为1为数字。真正的kicker是在where或join语句中,您首先在逻辑上过滤掉所有非数字值,最后做一个convert语句,并且此错误仍然发生(忽略短路并评估整行)。 – 2016-08-18 20:54:13

相关问题