转换失败
问题描述:
我在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)
的数据类型..任何人都可以帮助我在这里?在此先感谢
答
试试这个:
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
答
问题是与where hum = ISNUMERIC(hum)
ISNUMERIC返回int所以错误造成试图等同于ISNUMERIC(嗡嗡声)的结果嗡嗡声(VARCHAR)时(INT)。此外ISNUMERIC返回0或1(为真或假的),所以也许这不是你想要的功能?