最近因為有些需求,要利用T-SQL的語法將某個float的欄位中的數值轉成字串。 一開始會想到的就是用cast及convert這兩個函式。不過在使用後發現這兩個函式在將float值轉成字串時,都會有小數位數不足的問題。 後來查了一下網路中的相關資料,才發現 原來在T-SQL的MSDN中就有提到使用str()來轉換float成字串的解法 了。 測試的語法如下: -- 宣告一個變數來儲存要轉換的float數值 declare @TestValue as float set @TestValue = 0.952508696508641; -- 使用cast,convert及str來進行轉換 select @TestValue as Value, cast( @TestValue as varchar(100) ) as [Cast], convert( varchar(100), @TestValue ) as [convert], str( @TestValue, 25, 20 ) as [str] 結果如下: Value Cast convert str 0.952508696508641 0.952509 0.952509 0.9525086965086410 可以發現使用cast()或convert()這兩個函式時,就算我字串的長度給了100,它還是只有六位數。而使用str()的話,就可以自行控制小數位數了。