本次分享的主題是關於如何使用 T-SQL 來取到小數點後第 n 位。
廢話不多說,先執行下面的程式碼:
-- 宣告變數
DECLARE @pi float
-- 設定初始值
SET @pi=3.1415926
-- 顯示原本的值
SELECT 原本的值 = @pi
-- 取到小數點後第 1 位
SELECT [取到小數點後第 1 位] = LEFT(@pi, CHARINDEX('.', @pi) + 1)
執行結果:
從上面的執行結果,可以看到原本的值是 3.1415926,在取到小數點後第 1 位之後,就變成了:3.1。
現在要將上面的程式碼改寫成使用者自訂函數,這樣才能符合重複使用的效益:
-- 建立使用者自訂函數
CREATE FUNCTION dbo.GetDecimal(@number float, @point int)
RETURNS float
AS
BEGIN
RETURN LEFT(@number, CHARINDEX('.', @number) + @point)
END
GO
-- 測試看看
SELECT [取到小數點後第 3 位] = dbo.GetDecimal(3.1415926, 3)
執行結果:
也可以使用這個方式來計算小數位數
<pre class="c" name="code">SELECT [取到小數點後第 3 位] = convert(decimal(8,3),@pi)
結果為 3.142
這樣會自動四捨五入
如果不要四捨五入,可以在 @pi 減去 .(想取位數+1)5 值
如取到小數第三位 @pi-0.0005
<pre class="c" name="code">SELECT [取到小數點後第 1 位] = convert(decimal(8,3),@pi-0.0005)
結果即為 3.141