Gau*_*wal 1 sql t-sql sql-server
我在SQL Server中使用以下查询.
declare @dt float
set @dt = 1079938.05
select @dt AS Val,Convert(nvarchar(20),@dt) AS NVal, len(@dt) AS Len
Run Code Online (Sandbox Code Playgroud)
它的输出是
Val NVal Len
1079938.05 1.07994e+006 12
Run Code Online (Sandbox Code Playgroud)
我的问题是:
甲float在SQL服务器可以是4或8个字节.查找详情.
LEN()是一个测量字符串长度的函数.所以你想要测量值的字符串表示的长度,而不是值本身.
显示的显示值1.07994e+006是科学记数法,有12个字符.这里没有错.
您的呼叫使用默认值Convert(nvarchar(20),@dt)调用CONVERT()-function FLOAT and REAL(此处为详细信息和其他格式),这对于大于6位的数字是科学的.当你调用'len(@dt)'时,同样会发生同样的情况.由于输入LEN()必须是字符串,因此转换该值然后将其传递给函数.
你可以做什么:
您可能会考虑转换为DECIMAL......
另一个选择是首先使用STR()-function与RTRIM().
还有一个选择是FORMAT()-function(SQL Server 2012+)
.
无论如何你必须考虑,你看到的文字不是真正的价值.