2013-11-20 94 views
0

我不得不改變表中當前是Float到Varchar的列中的一列,但是當我使用alter命令時,它將一些較長的數字存儲在Scientific符號。SQL Server 2008 - 從Float生成Varchar列產生科學表示法

我可以避免這種情況嗎?

如果沒有,是否有辦法稍後更新表格以便將科學記數法存儲爲普通整數?

謝謝

+0

如果添加了一個新的VARCHAR列和鑄造的更新會發生什麼作爲varchars漂浮? –

+0

當我做CAST(ColumnName AS VARCHAR(100))時,我在科學記數法中得到結果' – devSuper

+0

此問題已被回答。 http://stackoverflow.com/questions/6521354/convert-float-into-varchar-in-sql-server-without-scientific-notation http://stackoverflow.com/questions/3715675/how-to-convert-float-to-varchar-in-sql-server – goofyui

回答

0
+0

我將此標記爲答案,但我發現Anon的評論非常有幫助。我最初將我的數據轉換爲十進制(38,19),然後使用更新語句刪除尾部零。更新MyTable SET MyColumn = LEFT(MyColumn,CHARINDEX('。',MyColumn) - 1) 其中CAST(SUBSTRING(MyColumn,CHARINDEX('。',MyColumn),LEN(MyColumn)-1)AS float)= 0' – devSuper

0

我對此有一個解決方法,我已經使用過去。丹並不遙遠,但只是鑄造它不會工作。您可以通過添加新的varchar列來更改表格,然後使用str和ltrim從舊的float列更新新列。說你的VARCHAR列是VARCHAR(50),使用類似:

更新YourTable集NewColumn = LTRIM(STR(OldColumn,50))

STR()轉換爲字符數據,LTRIM()擺脫的左側任何額外的空白。你可以隨時擺脫舊的專欄。感覺很難受,但應該爲你工作。

+0

這隻適用於整數,因爲小數點後的任何內容都會丟失。 – devSuper

相關問題