2017-01-04 35 views
0

我試圖更新列類型使用下面將字符串列轉換爲int列時,出現錯誤「將轉換varchar值'NULL'轉換爲數據類型int時轉換失敗。」

Alter table Customers_Practice1 
Alter column SalesRepEmployeeNumber int 

代碼它給我的錯誤,以詮釋「將varchar值‘NULL’轉換爲數據類型爲int時轉換失敗。」

從另一個帖子,我意識到,NULL被解讀爲一個字符串值,而不是僅僅NULL和下面的代碼使用select語句

Select Replace(SalesrepemployeeNumber,'NULL','0') from Customers_Practice1 

但是,當我嘗試使用它使用ALTER語句中使用它下面的代碼不起作用。

Alter table Customers_Practice1 
Alter column (Select Replace(SalesRepEmployeeNumber,'NULL','0') 
as SalesRepEmployeeNumber from Customers_Practice1) int 

我在做什麼錯?

+0

您是否嘗試過搜索谷歌?這是你的錯誤的第一個結果:http://stackoverflow.com/questions/428933/conversion-failed-when-converting-the-varchar-value-null-to-data-type-in​​t – Dekel

回答

3

我認爲你正在尋找update

update Customers_Practice1 
    SalesrepemployeeNumber = Replace(SalesrepemployeeNumber, 'NULL', '0') 
    where SalesrepemployeeNumber like '%NULL%'; 

但是,如果你想設置字符串空值,'NULL',以NULL

update Customers_Practice1 
    set SalesrepemployeeNumber = NULL 
    where SalesrepemployeeNumber = 'NULL'; 

不要混淆NULL0。它們不是同一件事。

如果這是唯一的問題,然後你可以這樣做:

Alter table Customers_Practice1 
    Alter column int; 
+0

謝謝!只是代碼的「更新」部分的更新,我認爲我們需要在「Salesrepemployeenumber = ......」之前使用「SET」,但整個事情完全爲我工作。 –

+0

@AmitSinghParihar。 。 。接得好。非常感謝你。 –

0

可以先修復無效數據,比做改變列

UPDATE Customers_Practice1 SET SalesRepEmployeeNumber= 
     CASE WHEN ISNUMERIC(SalesRepEmployeeNumber)=1 THEN SalesRepEmployeeNumber ELSE 0 END 
GO 
Alter table Customers_Practice1 Alter column SalesRepEmployeeNumber int 
1

只是建立在戈登的回答(+ 1),

在運行ALTER TABLE之前,我會檢查是否有其他轉換失敗。

Select * 
From Customers_Practice1 
Where Try_Convert(int,SalesRepEmployeeNumber) is null 
相關問題