SQL Server 2005 varchar verliert Dezimalstellen umwandeln in eine Dezimalzahl
Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal
--Outputs 5
Warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
edit: geändert (2,1) nach Anfrage.
Coentjie mich zu schlagen arrggg...
Müssen Sie deklarieren Ihre Dezimalstellen verwenden Sie dieses format Decimal(p,s)
p = Die maximale Gesamtanzahl von Dezimalstellen, die gespeichert werden können, sowohl Links als auch rechts vom Dezimaltrennzeichen. Die Präzision muss ein Wert zwischen 1 und der maximalen Genauigkeit von 38. Die Standard-Präzision liegt bei 18 Jahren.
s = Die maximale Anzahl von Dezimalstellen, die gespeichert werden können, um die rechts vom Dezimaltrennzeichen. Maßstab muss einen Wert von 0 bis p. Maßstab kann nur angegeben werden, wenn Präzision angegeben ist. Die Standard-Skalierung ist 0; also 0 <= s, <= p. Maximalen Speichergrößen variieren, basierend auf der Genauigkeit.
Versuchen
Set @BadDecimal = '4,5'
umwandeln oder konvertieren zu expliziten dezimal(Ziffern, Genauigkeit) funktioniert:
SQLServer-Hilfe besagt, dass jede Kombination von (Ziffern, Genauigkeit) wird behandelt, als separate Daten-Typ.