Genaue Dezimalberechnungen in SQL Server erfordern häufig die Wahl zwischen Kürzung und Rundung. Dieser Leitfaden beschreibt die wichtigsten Unterschiede und zeigt, wie man Dezimalwerte ohne Rundung abschneidet.
Anschauliches Beispiel:
<code class="language-sql">DECLARE @value DECIMAL(18,2); SET @value = 123.456;</code>
SQL Server rundet @value
automatisch auf 123,46. Obwohl es für viele Anwendungen geeignet ist, gibt es Szenarien, in denen Rundungen unerwünscht sind und eine Kürzung erforderlich machen.
Effektive Trunkierungstechniken
1. Nutzung der RUND-Funktion:
Die ROUND
-Funktion bietet eine subtile, aber leistungsstarke Funktion: einen dritten Parameter, der die Kürzung steuert.
<code class="language-sql">ROUND(123.456, 2, 1);</code>
Ein dritter Parameter ungleich Null weist ROUND
an, abzuschneiden statt zu runden.
2. Verwendung von CAST und CONVERT:
Durch die Umwandlung oder Konvertierung der Dezimalzahl in einen Ganzzahltyp wird der Dezimalteil direkt abgeschnitten:
<code class="language-sql">CAST(@value AS INT); CONVERT(INT, @value);</code>
3. String-Manipulation mit SUBSTRING oder LEFT:
Extrahieren Sie den gewünschten Teil mit SUBSTRING
oder LEFT
und konvertieren Sie ihn dann zurück in eine Dezimalzahl:
<code class="language-sql">SUBSTRING(@value, 1, 4); LEFT(@value, 4);</code>
4. Verwendung der FLOOR-Funktion:
Die Funktion FLOOR
bietet in Kombination mit Multiplikation und Division eine weitere Kürzungsmethode:
<code class="language-sql">FLOOR(@value * 100) / 100;</code>
Dies wird effektiv auf zwei Dezimalstellen gekürzt. Denken Sie daran, den Multiplikator und den Divisor für unterschiedliche Präzisionsstufen anzupassen.
Das obige ist der detaillierte Inhalt vonWie schneide ich Dezimalstellen in SQL Server ab, statt sie zu runden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!