T-SQL – Float in String konvertieren

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert