2016-05-04 29 views
1

Ich habe Probleme beim Konvertieren in Float. Hier ist der Code:"Fehler beim Konvertieren des Datentyps varchar in float" aus einer einzelnen Zeile Datei importieren

DECLARE @USRATE as varchar(10); 

SELECT @USRATE = BulkColumn 
FROM OPENROWSET(BULK 'file.txt', SINGLE_NCLOB) rate_from_file; 

PRINT @USRATE; 
PRINT CAST(@USRATE AS float); 
PRINT CONVERT(FLOAT, @USRATE); 

Die txt-Datei ist einfach ein Dezimalwert (dh 0,8000 durch Wagenrücklauf gefolgt), aber beide der oben genannten Befehle zurückkehrt:

0.7883 
Msg 8114, Level 16, State 5, Line 9 
Error converting data type varchar to float. 

So sowohl CAST und CONVERT don‘ t arbeiten. Ich habe auch versucht, mit derselben Ausgabe zu DECIMAL zu konvertieren. Irgendeine Idee, wie man das repariert?

Antwort

3

Daher hat die @usrate Zeichen, die nicht als gültige Ziffern erkannt werden. Es ist durchaus möglich, dass das Zeilenende die Konvertierung stört. Sie könnten versuchen:

select cast(left(@usrate, 6) as float) 

By the way, gibt es ein Argument, das Sie in eine Dezimalzahl umstellen sollte eher als ein Schwimmer, um precision floating point Probleme zu vermeiden.

+0

Herr, du hast meinen Tag gemacht! Das hat perfekt funktioniert :) Ich nehme das Präzisionsargument zur Kenntnis, das Sie erwähnen. Vielen Dank! – JulioQc

Verwandte Themen