2017-10-31 1 views
1

ich einen FehlerSQL Query - Kann nicht varchar konvertieren nach Masseneinfügung zu schweben

Fehler beim Konvertieren Datentyp varchar

zu schwimmen und ich bin der Hoffnung, für einige Ideen.

Ich mache eine Masseneinfügung von einer .dat Datei in eine temporäre Tabelle und dann die Daten in einen Float konvertieren möchten, wenn es zu einer vorhandenen Tabelle hinzugefügt, wenn ich den Fehler bekomme.

CREATE TABLE #Temp_Table ([Op_Base_Qty] VARCHAR(50) NULL) 

BULK INSERT #Temp_Table 
FROM '\\File_Path.DAT' 
WITH (FIRSTROW = 2, FIELDTERMINATOR = '|', ROWTERMINATOR = '\n') 

TRUNCATE TABLE [DBO].[TABLE2] 

INSERT INTO [DBO].[TABLE2]([Qty]) 
    SELECT CAST([Op_Base_Qty] AS Float) 
    FROM #Temp_Table 

Fehlerbehebung tun, werden die Werte, die einen Fehler werfen haben eine Länge von 9 Zeichen (d.h. 1,000.000 oder 4,324.400). In den Rohdaten sind keine Nullen oder Text enthalten. Da ich dachte, dass die Länge das Problem ist, habe ich auch Dezimal (18,3) versucht, ohne Erfolg.

Wie kann ich ein varchar mit Zeichen wie 1.000.000 in ein Float (oder eine beliebige Zahl) konvertieren?

Danke für Ihre Hilfe

Antwort

1

versuchen, die Kommas zu entfernen:

select convert(float,replace([Op_Base_Qty],',','')) 
+1

Guter Fang. Ich lese die vorletzte Zeile im OP und denke, dass sie es zur Lesbarkeit so ausdrücken. – scsimon

+0

Funktioniert perfekt. Vielen Dank! – LukeT

+0

@LukeT Glücklich zu helfen! – SqlZim

Verwandte Themen