SQL Server 中精確的小數計算通常需要在截斷和舍入之間進行選擇。本指南詳細介紹了主要差異,並示範如何在不四捨五入的情況下截斷小數值。
說明性範例:
<code class="language-sql">DECLARE @value DECIMAL(18,2); SET @value = 123.456;</code>
SQL Server 會自動將 @value
捨入為 123.46。 雖然適合許多應用程序,但存在不需要捨入的情況,需要截斷。
有效的截斷技術
1。利用 ROUND 函數:
ROUND
函數提供了一個微妙但強大的功能:控制截斷的第三個參數。
<code class="language-sql">ROUND(123.456, 2, 1);</code>
非零的第三個參數指示 ROUND
截斷而不是捨入。
2。使用 CAST 和 CONVERT:
將小數轉換或轉換為整數型別會直接截斷小數部分:
<code class="language-sql">CAST(@value AS INT); CONVERT(INT, @value);</code>
3。使用 SUBSTRING 或 LEFT 進行字串運算:
使用SUBSTRING
或LEFT
提取所需的部分,然後轉換回小數:
<code class="language-sql">SUBSTRING(@value, 1, 4); LEFT(@value, 4);</code>
4。使用 FLOOR 函數:
FLOOR
函數與乘法和除法結合,提供了另一種截斷方法:
<code class="language-sql">FLOOR(@value * 100) / 100;</code>
這有效地截斷到小數點後兩位。 請記住根據不同的精度等級調整乘數和除數。
以上是如何在 SQL Server 中截斷而不是捨入小數位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!