2016-02-27 129 views
1

我在SQL Server 2008中轉換失敗

SELECT 
    CAST(AVG(CAST(hum AS DECIMAL(10, 2))) AS DECIMAL(10, 2)) 
FROM [tablelog] 
WHERE hum = ISNUMERIC(hum) 

此查詢,它拋出一個錯誤

消息245,級別16,狀態1,行3
轉換轉換VARCHAR值'78 0.60'爲int數據類型時失敗。

hum列設置爲varchar(50)的數據類型..任何人都可以幫助我在這裏?在此先感謝

回答

1

試試這個:

SELECT CAST(AVG(CAST(hum as DECIMAL(10,2))) AS DECIMAL(10,2)) 
FROM [tablelog] 
WHERE ISNUMERIC(hum)=1 

的地方在你的查詢子句是錯誤的,ISNUMERIC()始終返回0(如果爲false)或1(如果爲true)

變化where hum = ISNUMERIC(hum)where ISNUMERIC(hum)=1

1

問題是與where hum = ISNUMERIC(hum)

ISNUMERIC返回int所以錯誤造成試圖等同於ISNUMERIC(嗡嗡聲)的結果嗡嗡聲(VARCHAR)時(INT)。此外ISNUMERIC返回0或1(爲真或假的),所以也許這不是你想要的功能?