2013-08-27 60 views
1

這實際上是一個(不是很優雅的)解決方案,當我試圖從dummy_table和一些模糊的數據總數進行聯合時,將一個float返回到varchar列中的問題的解決方案。SQL Float to Varchar

爲了獲得浮動爲字符串,我用在SQL Server 2008中的以下功能(我發現SO):

str(sum(<float_column>),25,5) 

由此得到了大量的前導空格和尾隨零,這是不可取的。 我用下面的字符串來測試用假表的格式(注意,有24位前不顯示):

  • 「8.50000」
  • 「0.50000」
  • 「8.00000」

我用下面的函數來獲得所需的格式:

select replace(rtrim(replace(replace(rtrim(replace(ltrim(
'   8.0000'),'0',' ')),' ','0'),'.',' ')),' ','.') from dummy_table; 

這種方式按以下順序進行:

  1. LTRIM向左微調空白區域。
  2. 用空格替換全零。
  3. RTRIM從右側修剪這些空白空間。
  4. 用零替換所有空格。
  5. 用空格替換點。
  6. 修剪右側的所有空間(如果存在,則去掉尾隨點)。
  7. 用點替換空格(如果存在,將點放在正確的位置)。

如果你們可以想出一個更好的方法來做到這一點,讓我知道!

+0

也許這樣的事情。得到你的錢。用整數部分創建一個變量(轉換爲int應該可以工作。)創建另一個包含小數點右側所有內容的變量。 (使用字符串函數)。使這兩個變量一致。 –

+0

如果你描述了你想要的結果,它會有所幫助。 –

回答

1

輪應該爲此工作。

選擇輪(8.5000000000,5)

http://sqlfiddle.com/#!3/1fa93/8845

+0

這是一種享受。要將浮點數放入varchar,請使用以下代碼: str(round(,5)) – ESP