2013-01-08 56 views
1

我有一個存儲不同的信息到一個值列varchar(max)錯誤轉化爲varchar(最大值)時,整數或浮點數

我需要能夠提取一些信息,從該表中,將其轉換爲一個表一個整數和平均數。當我嘗試轉換時,我遇到了一個問題。

這不起作用:

select cast(value as float) as value 
from table 

誰能告訴我如何正確地轉換呢?

+1

的話題良好的閱讀:http://www.sqlservercentral.com/articles/IsNumeric/71512/ – MarkD

+1

嚴重:閱讀[使用VARCHAR(n)的重點是什麼?](http://www.simple-talk.com/sql/database-administration/whats-the-point-of-using-varchar%28n%29-anymore /) - 你不應該使用'varchar(max)'太多 - 只有當**真正**時,絕對肯定需要(當你需要**超過8000個字符時!) –

+0

感謝您的文章,在這種情況下,我無法選擇數據的格式(工作),所以我不得不尋找解決辦法。再次感謝這一次的協助。 – wondergoat77

回答

5

推測,問題在於某些值不是數字格式。試試這個:

select (case when isnumeric(value) = 1 then cast(value as float) end) 
from table 

該功能可將所有的數字飄起,並把空值剩餘的字段。

如果你想看到導致問題的值,使用:

select value 
from table 
where isnumeric(value) = 0 and value is not null 
+0

謝謝,那就是訣竅!非常感謝這些信息。 – wondergoat77