2016-02-27 114 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(为真或假的),所以也许这不是你想要的功能?