Um in T-SQL einen Float-Wert in einen String zu konvertieren gibt es eine spezielle Funktion. Mit der sonst gängigen Methode CAST() oder CONVERT() kommt man hier nicht weiter.
Um dies zu veranschaulichen, habe ich eine Tabelle „Table1“ angelegt, mit einer Spalte „Col1“, Datentyp „Float“ und einem Beispielwert 123456789123,45
Ein simples Select-Statement liefert folgendes Ergebnis:
SELECT Col1 FROM TestDB.dbo.Table1 --- 123456789123,45
Der Versuch, den Wert „klassisch“ zu konvertieren funktioniert nicht wirklich …
SELECT CAST(Col1 AS VARCHAR) AS Col1 FROM Testdb.dbo.Table1 SELECT CONVERT(VARCHAR, Col1) AS Col1 FROM Testdb.dbo.Table1 --- 1.23457e+011
Um den Wert erfolgreich vom Typ Float in einen String zu konvertieren gibt es die STR() Funktion.
Der Syntax lautet wie folgt
STR ( float_expression [ , length [ , decimal ] ] )
Schauen wir uns das Ganze an unserem Beispiel an.
SELECT LTRIM(STR(Col1, 20,2)) AS Col1 FROM Testdb.dbo.Table1 --- 123456789123,45
Wenn der zu konvertierende Wert eine variable / unbekannte Länge hat, dann nimmt man einfach als length den maximal möglichen Wert und entfernt wie im Beispiel die voranstehenden Leerzeichen mit LTRIM().
Ist die gewählte length zu kurz, so bekommt man Sternchen als Ausgabe:
SELECT LTRIM(STR(Col1, 5,2)) AS Col1 FROM Testdb.dbo.Table1 --- *****
Referenz:
https://msdn.microsoft.com/en-us/library/ms189527.aspx