格式编号n SQL

格式编号n SQL,sql,sql-server,Sql,Sql Server,我想将数字格式化如下: 从65803.12345到65803.12 从65803.98500到65803.98如果您只想在小数点后两位数,而不需要上限或下限 DECLARE @i AS float DECLARE @TmpInt AS INT DECLARE @TmpDec AS FLOAT SELECT @i = 65803.12345 SELECT @TmpInt = (SELECT CAST(@i AS INT)) SELECT @TmpDec = @i - @TmpInt SE

我想将数字格式化如下:

65803.12345
65803.12


65803.98500
65803.98

如果您只想在小数点后两位数,而不需要上限或下限

DECLARE @i AS float 
DECLARE @TmpInt AS INT 
DECLARE @TmpDec AS FLOAT 

SELECT @i = 65803.12345 
SELECT @TmpInt = (SELECT CAST(@i AS INT))
SELECT @TmpDec = @i - @TmpInt
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2))
-- Output : 65803.12

SELECT @i = 65803.98500
SELECT @TmpInt = (SELECT CAST(@i AS INT))
SELECT @TmpDec = @i - @TmpInt
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2))
-- Output : 65803.98

SELECT @i = 65803.12666
SELECT @TmpInt = (SELECT CAST(@i AS INT))
SELECT @TmpDec = @i - @TmpInt
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2))
-- Output : 65803.12
您可以使用
圆形(,)

更多信息:

试试这个

 declare @s decimal(12,5)
 set @s = 65803.98500
 select cast(@s-@s%1+cast(@s%1*100 as int)*0.01 as decimal(12,2))
结果是

65803.98

使用
CAST(Num作为十进制数(18,2))
要舍入还是截断?将65803.12666添加到示例数据中!也可以考虑在前端应用程序中这样做。
65803.98