如何在SQL Server 2005中没有落后零的情况下四舍五入?
? select round(100.5555, 2)
...产量100.5500。如何摆脱零?
select CAST(round(100.5555, 2) AS DECIMAL(8,2))
SELECT CAST(ROUND(100.5555, 2) AS FLOAT)
,这听起来像显示逻辑,因此,我怀疑您最好在UI中而不是DB中这样做。 Declare @d Decimal(8,2)可以为您提供帮助。
SELECT replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') 'Original Test Data',
CASE
WHEN replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') IS NULL OR replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') =''
OR replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') ='0.'
THEN '0'
WHEN LEN(replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0')) =PATINDEX('%.%',replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') )
THEN SUBSTRING(replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0'),0,LEN(replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0')))
ELSE replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0')
END N'remove decimals',
PATINDEX('%.%',replace(rtrim(replace(convert(varchar, F_Percent),'0',' ')),' ','0') ) 'If Decimal Exists'
FROM (SELECT '3' F_Percent UNION SELECT '15' UNION SELECT '2.0' UNION SELECT '1000' UNION SELECT '20.01' UNION SELECT '0.10' UNION SELECT '1.5' UNION SELECT '20.5' UNION SELECT '0.07477'
UNION SELECT '0.11' UNION SELECT '1.0' UNION SELECT '0.0' UNION SELECT '0.0000' UNION SELECT '0.000850000' UNION SELECT '0.00510000' UNION SELECT '21.00000' UNION SELECT '0'
UNION SELECT '-1.5'
)TESTDATA
WHERE ISNUMERIC(F_Percent)=1