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()的話,就可以自行控制小數位數了。
一開始會想到的就是用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()的話,就可以自行控制小數位數了。
留言
張貼留言