TSQL Get Number of Decimal Place Digit – TSQL 找出數據有多少個小數位是有數值的

在之前一個網誌介紹過用TSQL 找出多過2個小數位的record

Check if TSQL field has contain more than 2 decimal place — TSQL上查看欄位上的有沒有多過2個小數位的資料 

今天想和大家介紹一個自己寫的功能..
用來方便找出數據上有多才個小數位是有數值的
E.G.
0.1234 = 4個小數位
0.1200 = 2個小數位

以下是我簡單的功能 Get_NoOfDecimalPlaceDigit

[sql]
— =============================================
— Author: <ShareChiWai>
— Create date: <2012-09-20>
— Description: <This function is used to retrive the number of decimal place digit the given value have>
— =============================================
CREATE FUNCTION [dbo].[Get_NoOfDecimalPlaceDigit]
(
—- 首先declare一個parameter做input
@FieldValue AS DECIMAL(19, 6) = 0
)
—- 輸出的結果是有多少個小數位值..所以是Integer
RETURNS INT
AS
BEGIN
—- 很複雜的一個TSQL… 我用了STR input parameter來把數據轉成了6個小數位的decimal 的string
—- 之後再找出小數位… 再用RIGHT 去取得所有小數位值…再把他轉做INT
—- 用reverse去去除0的餘值…
DECLARE @DecimalValue AS INT = CAST(REVERSE(RIGHT(STR(@FieldValue, 20,
6),
LEN(STR(@FieldValue,
20, 6))
– CHARINDEX(‘.’,
STR(@FieldValue,
20, 6)))) AS INT)

—-轉出結果..如果是0的話輸出0.. otherwise輸出數字有多少個數位
—- 便找到數據上有多才個小數位是有數值的
RETURN CASE WHEN @DecimalValue = 0 THEN 0
ELSE LEN(@DecimalValue)
END
END
[/sql]

E.G.

[sql]
SELECT dbo.Get_NoOfDecimalPlaceDigit(12.35012)
—- 結果是5

SELECT dbo.Get_NoOfDecimalPlaceDigit(12.0000)
—- 結果是0

[/sql]

Hope you find it useful

Drag and Drop upload file and tag file with filename and correct path…etc

Media query for different device

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.