iT邦幫忙

DAY 27
8

T-SQL 應用之美系列 第 27

如何使用 T-SQL 取到小數點後第 n 位

本次分享的主題是關於如何使用 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)

執行結果:


上一篇
如何改變欄位值是 NULL 的資料顯示的結果
下一篇
如何取得文數字的資料中,所有的數字的值
系列文
T-SQL 應用之美30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jamesjan
iT邦高手 1 級 ‧ 2008-10-16 09:30:24

也可以使用這個方式來計算小數位數

<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

我要留言

立即登入留言