一、前言 很多企業管理系統,在單據及報表的使用時,都會提供小數點有效數字後0是否顯示的功能。在金蝶雲星空的BOS平臺,這個功能叫"隱藏尾0"。現在假如自己開發一個系統,提供可配置的"隱藏尾0"的功能,該如何實現呢?以下是資料庫開發方面的解決方案,僅供參考。 二、方案 方法一、將數據轉換為REAL類型 ...
一、前言
很多企業管理系統,在單據及報表的使用時,都會提供小數點有效數字後0是否顯示的功能。在金蝶雲星空的BOS平臺,這個功能叫"隱藏尾0"。現在假如自己開發一個系統,提供可配置的"隱藏尾0"的功能,該如何實現呢?以下是資料庫開發方面的解決方案,僅供參考。
二、方案
方法一、將數據轉換為REAL類型
1)代碼:
SELECT CAST(1 AS REAL) SELECT CAST(1.000000 AS REAL) SELECT CAST(1.010000 AS REAL)
2)結果:
方法二、通過自定義函數實現
1)代碼:
CREATE FUNCTION [dbo].[RC_CLEARZERO](@INVALUE VARCHAR(50)) RETURNS VARCHAR(50) AS BEGIN DECLARE @RETURNVALUE VARCHAR(20) IF (ISNULL(@INVALUE,'')='' OR ISNUMERIC(@INVALUE)=0) --非數字或無效數字 SET @RETURNVALUE='' ELSE IF (CHARINDEX('.',@INVALUE)=0) --不含小數點 SET @RETURNVALUE=@INVALUE ELSE IF (SUBSTRING(REVERSE(@INVALUE),PATINDEX('%[^0]%',REVERSE(@INVALUE)),1)='.') --小數點後全為0 SET @RETURNVALUE=LEFT(@INVALUE,LEN(@INVALUE)-PATINDEX('%[^0]%',REVERSE(@INVALUE))) ELSE SET @RETURNVALUE=LEFT(@INVALUE,LEN(@INVALUE)-PATINDEX('%[^0]%.%',REVERSE(@INVALUE))+1) RETURN @RETURNVALUE END
2)執行:
SELECT [dbo].[RC_CLEARZERO] ('1') SELECT [dbo].[RC_CLEARZERO] ('1.000000') SELECT [dbo].[RC_CLEARZERO] ('1.010000')
3)結果: