2009-01-09 6 views
8

Wenn ich Datensätze in eine lange Tabelle einfügen, bekomme ich den Fehler "Konvertierung beim Konvertieren der Varchar-Wert 'NULL' in Datentyp int" Wie kann ich feststellen, welche Spalte Fehler aus?"Konvertierung fehlgeschlagen beim Konvertieren der VARCHAR-Wert 'NULL' in den Datentyp Int"

Die Tabelle enthält viele Felder und Millionen von Datensätzen. Jede Iteration dauert 10 Minuten, um zu bombardieren, wenn ich versuche, eine "NULL" -String irgendwo in eine Integer-Spalte einzufügen. Ich dachte, der SQL-Server kann mir den genauen Namen der Spalte sagen :(

+0

Was meinen Sie mit einer langen Tabelle und können Sie die SQL, die das Problem verursacht, zeigen? – wcm

+0

Wo sehen Sie diesen Fehler? Führen Sie ein Skript von Query Analyzer aus oder sprudelt es von einem executeScalar-Aufruf in einer dotNet-App auf. Sobald wir das wissen, können wir vielleicht bessere Vorschläge machen, wie wir das Problem lösen können. – wcm

Antwort

2

Beginnen Sie mit dem Auskommentieren eines nach dem anderen, bis es aufhört zu bombardieren. Oder sehen Sie sich an, welcher Wert NULL für eine int-Spalte ist .

+0

Ich stimme zu, nicht elegant oder unbedingt effizient, aber so würde ich es machen. –

2

Haben Sie die Daten reparieren müssen oder können Sie einfach nULL-Werte für das einfügen?

Wenn Sie konvertieren kann nur 0'en konvertieren, können Sie Ihre Varchars wickeln könnte, die nur mit einer ISNULL-Funktion umgewandelt zu werden. setzen Das Folgende um alle Werte herum, die in int-Felder eingefügt werden:

ISNULL(col1,0) 
12

Wenn der Wert wirklich NULL ist, würde kein Konvertierungsfehler auftreten. Sie haben jedoch eine Zeichenfolge = "NULL", dann würden Sie diesen Fehler erhalten.

Was könnten Sie tun, ist ...

NullIf(YourValueHere, 'NULL') 

NullIf gibt den Wert des ersten Parameters, wenn es nicht der gleiche wie der zweite Parameter ist. Wenn die Parameter identisch sind, gibt NullIfNULL zurück.

Ex:

Select NullIf('Any Value', 'NULL') 

Select NullIf('null','null') 

Die erste wird zurückkehren 'jeden beliebigen Wert' und die zweiten kehren NULL (nicht 'null')

3

Die Tatsache, dass es erwähnt „die varchar Wert NULL‘ '"gibt an, dass Sie versuchen, den Wert der Spalte auf die Zeichenfolge" NULL "anstelle des Werts NULL festzulegen.

Schauen Sie in Ihrer Aussage für das Wort NULL umgeben von Anführungszeichen. Sie müssen diese Anführungszeichen entfernen.

Verwandte Themen