2011-04-29 135 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

相關問題