去除小数后0与转文本

1 最简单方法

select cast ( CAST ('12.3400' as float) AS VARCHAR(40))

--12.34
--注意 精度丢失

select cast ( CAST ('123456.7800' as float) AS VARCHAR(40))

--123457   


--注意 精度丢失和科学计数法

select cast ( CAST ('12345678.00' as float) AS VARCHAR(40))

--1.23457e+007

2 目前发现靠谱方法还是自定义函数

--以下SQL代码为网络摘抄
CREATE
FUNCTION dbo.ufn_hr_clearzero (@inValue VARCHAR(50)) RETURNS VARCHAR(50) AS BEGIN DECLARE @returnValue VARCHAR(40); IF (@inValue = '') SET @returnValue = ''; --空的时候为空 ELSE IF (CHARINDEX('.', @inValue) = '0') SET @returnValue = @inValue; --针对不含小数点的 ELSE IF (SUBSTRING(REVERSE(@inValue), PATINDEX('%[^0]%', REVERSE(@inValue)), 1) = '.') SET @returnValue = LEFT(@inValue, LEN(@inValue) - PATINDEX('%[^0]%', REVERSE(@inValue))); --针对小数点后全是0的 ELSE SET @returnValue = LEFT(@inValue, LEN(@inValue) - PATINDEX('%[^0]%.%', REVERSE(@inValue)) + 1); --其他任何情形 RETURN @returnValue; END;

猜你喜欢

转载自www.cnblogs.com/BinBinGo/p/10385660.html