2017-01-04 6 views
0

Ich versuche, den Spaltentyp aktualisieren Sie den Code untenBeim Konvertieren einer String-Spalte in eine int-Spalte erhalte ich den Fehler "Konvertierung fehlgeschlagen, wenn der Varchar-Wert 'NULL' in Datentyp int konvertiert wird."

Alter table Customers_Practice1 
Alter column SalesRepEmployeeNumber int 

Es gibt mir den Fehler int mit „Fehlern bei der Konvertierung, wenn der varchar Wert‚NULL‘in dem Datentyp int zu konvertieren.“

Von einem anderen Beitrag, erkannte ich, dass NULL ist eher als ein String-Wert gelesen werden, als nur NULL und der folgende Code arbeitet mit einer select-Anweisung

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

Aber wenn ich mit dem Alter-Anweisung versucht, mit Der Code darunter hat nicht funktioniert.

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

Was mache ich falsch?

+0

Haben Sie versucht, Google danach zu suchen? Dies ist das erste Ergebnis für Ihren Fehler: http://stackoverflow.com/questions/428933/conversion-failed-when-converting-the-varchar-value-null-to-data-type-int – Dekel

Antwort

3

Ich glaube, Sie suchen update:

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

Wenn Sie jedoch Zeichenfolge Nullwerte gesetzt werden soll, 'NULL', zu NULL:

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

Verwechseln Sie nicht NULL und 0. Sie sind nicht dasselbe.

Wenn dies das einzige Problem ist, können Sie dann tun:

Alter table Customers_Practice1 
    Alter column int; 
+0

Danke !! nur ein Update auf den "update" Teil des Codes, ich denke, wir müssen "SET" vor "Salesrepemployeenumber = ......" verwenden, aber die ganze Sache hat für mich völlig funktioniert. –

+0

@AmitSinghParihar. . . Guter Fang. Vielen Dank. –

0

Sie die ungültigen Daten zuerst beheben, als Spalte tun ändern

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

einfach auf Gordon Antwort zu bauen (+ 1),

Bevor Sie die ALTER TABLE ausführen, würde ich überprüfen, ob andere Konvertierungsfehler auftreten.

Select * 
From Customers_Practice1 
Where Try_Convert(int,SalesRepEmployeeNumber) is null 
Verwandte Themen