请参阅下面的DDL:
create table #TestFloat (id int, floattest float)
insert into #TestFloat values (1,65478)
insert into #TestFloat values (1,65478888)
insert into #TestFloat values (1,42)
如何将浮点值转换为varchar?我试过这个:
select top 1 cast(floattest as varchar(15)) from #TestFloat
产生这个:
6.54789e+007
和此:
select top 1 id,Str(floattest, 15, 0) from #TestFloat
' 65478'
我在上面添加了引号,以证明它已被转换为char。
这有效(取自这个问题:How to convert Float to Varchar in SQL):
select CAST(CAST(floattest AS DECIMAL(20)) AS VARCHAR(20)) from #TestFloat
为什么我必须先输入小数?
答案 0 :(得分:1)
怎么样
SELECT FORMAT(floattest,'R') FROM #TestFloat
(或'G'
或'N'
,具体取决于您的使用情况)
https://msdn.microsoft.com/library/dwhawy9k.aspx
或
SELECT LTRIM(STR(floattest,8,0)) FROM #TestFloat
(选择你的精度和比例以适应但注意四舍五入) https://msdn.microsoft.com/en-AU/library/ms189527.aspx
你也会问"为什么"?您可能应该从这里开始阅读SQL Server类型的MSDN页面:https://msdn.microsoft.com/en-AU/library/ms187752.aspx和此答案Difference between numeric, float and decimal in SQL Server
答案 1 :(得分:0)
您可以在sql server中使用convert函数
select top 1 CONVERT (NVARCHAR(15),floattest) from #TestFloat
答案 2 :(得分:0)
首先转换为十进制,然后转换为varchar。
<强>查询强>
SELECT CAST
(
CAST(floattest AS DECIMAL(25,0))
AS VARCHAR(MAX)
)
FROM #TestFloat;