Ich habe eine Abfrage (SQL Server
), die eine Dezimalzahl zurückgibt. Ich brauche nur 2 Dezimalstellen ohne Rundung:SQL Get Dezimal mit nur 2 Stellen ohne Runde
Im Beispiel oben ich brauchen würde, bekommen: 3381,57
Jeder Hinweis?
Ich habe eine Abfrage (SQL Server
), die eine Dezimalzahl zurückgibt. Ich brauche nur 2 Dezimalstellen ohne Rundung:SQL Get Dezimal mit nur 2 Stellen ohne Runde
Im Beispiel oben ich brauchen würde, bekommen: 3381,57
Jeder Hinweis?
Sie können dies über die ROUND()
Funktion erfüllen die Länge und Präzision Parameter mit Ihrem Wert zu kürzen, anstatt wirklich Runden es:
SELECT ROUND(3381.5786, 2, 1)
Die zweite Der Parameter 2
gibt an, dass der Wert auf zwei Dezimalstellen gerundet wird, und der dritte Genauigkeitsparameter gibt an, ob eine tatsächliche Rundung oder Abschneidung ausgeführt wird (Werte ungleich Null werden abgeschnitten und nicht abgerundet).
Beispiel
Sie können see an interactive example of this in action here.
Sie könnten ein 'CAST (RUNDE (...) AS DECIMAL (12,2))' ... +1 von meiner Seite hinzufügen – Shnugo
Wenn Sie die Darstellung steuern möchten, müssen Sie den Wert als Zeichenfolge ausgeben. Ein Verfahren ist in eine Dezimalzahl zu konvertieren und dann in einen String:
select cast(cast(total as decimal(10, 2)) as varchar(255))
Eine andere Methode ist, um eine Zeichenfolge zu konvertieren str()
verwenden. Dies erfordert jedoch oft die Entfernung von Räumen:
select replace(str(total, 10, 2), ' ', '')
Beide Vorschläge runden das auf 3381,58 ab. .. und btw: es gibt eine paranthesis zu viel (erste suggestion nach total) ... – Shnugo
'cast (NumCol als Dezimalzahl (12,2))'? – jarlh
@jarlh, OP will Trunkierung, keine Rundung ... – Shnugo
@Shnugo, macht MS SQL Server 'Cast' Runde? Unerwartet. – jarlh