T-SQL中將float完整轉成字串的方式

最近因為有些需求,要利用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()的話,就可以自行控制小數位數了。

留言

這個網誌中的熱門文章

DOS Batch指令檔中如何記錄log資訊

用捷徑方式執行需帶入命令列參數的Windows Form程式

使用regular expression來match中括號(square bracket)