在sql server中将float转换为varchar的最佳方法

时间:2016-09-28 13:35:33

标签: sql sql-server

SQL Server中此SQL查询的正确输出是什么

DECLARE @dt float;
SET @dt = 12345678912345678912345678912345678912;
SELECT
    STR(@dt, 50)

输出是:

        12345678912345680000000000000000000000

我的问题是在sql server中将float转换为varchar的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

根据MSDN documentation,您无法使用FLOAT来存储精度超过15位的任何内容,或者它们会被舍入。使用DECIMAL(38)来获得更高的精确度 - 最多38个,并使用CAST代替STRSTR将它转换为float然后转换为string,从而破坏了目的。

e.g。

DECLARE @dt DECIMAL(38);
SET @dt = 12345678912345678912345678912345678912;
SELECT
    CAST(@dt AS VARCHAR(50))

答案 1 :(得分:0)

你能做的最接近的是38位小数,你可以在下面查看,但如果它超过38位,你仍会丢失一些数字

DECLARE @dt float;
declare @dt1 decimal(38,2)
SET @dt1 = convert(decimal(38,2),123456789123456789123456789123456789.12);

SELECT
    convert( varchar(100), @dt1)
相关问题