SQL Server判斷小數位數


項目中需要寫一規則,目的是判斷數值的小數位數,可以分為2中情況、

  1.直接以小數點為分界點,小數點后的數據表示小數的位數,此種情況比較簡單,直接使用CHARINDEX函數就可以搞定

  其中CHARINDEX的用法自行找API

  語法:select  len(字段名)-CHARINDEX('.',字段名) from 表名

eg:select len(LDLC)-CHARINDEX('.',LDLC) from t_ld

 

  2.由於SQL中一般在定義表時,就設定了表中數據的類型以及長度,那么數據不足此長度時,系統會在后面默認加0,那么直接通過方法1查詢小數位數就不准確,例如數據庫中本來存儲的數據為1.23,而在定義表時,定義其長度為3位,雖然認為看數據的時候是1.23,時間上通過len(xxx),其結果為3;還有一種情況就是用戶統計小數位數的時候,不想統計末尾的0,也就是數據為1.230時,用戶希望其小數位數2,即統計len(1.23)。基於上述需求,其代碼如下:

 1 CreateFUNCTION [dbo].[getDecimalLenth]( @Number nvarchar(20))
 2 RETURNS nvarchar(20)
 3 AS 
 4 begin
 5   `WHILE RIGHT(@Number,1) =0 and CHARINDEX('.',@Number)>0 and left(RIGHT(@Number,2),1)<>'.'
 6     BEGIN 
 7       Set @Number=LEFT(@Number,LEN(@Number)-1) 
 8     END
 9     return case when CHARINDEX('.',@Number)>0 and right(@Number,1)<>0 
10         then len(@Number)-CHARINDEX('.',@Number) 
11         else 0 end
12 end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM