SELECT [列 0],AVG(cast([列 7] as numeric(8,2)))
FROM [TABLE1]
GROUP BY [列 0]
having avg(cast([列 7] as decimal(8,2)))>60;
报错:从数据类型 varchar 转换为 numeric 时出错。
注:原始表格中的列7中没有字母,全是字符串型的数字。
错在哪里了?
听力你的建议。我用isnumeric函数查询后,确实有空白的行。
但是,还有一个疑问:为什么转换位float型就不报错,而转decimal或numeric 时就会报错呢?
报错:从数据类型 varchar 转换为 numeric 时出错。
没有报算术溢出。
谢谢。
当空字符串 (" ") 转换为 numeric 或 decimal 时,SQL Server 也返回错误。
这是联机丛书上原话,并没有多加解释
个人猜测可能是由于float是近似数,可以忽略转换的精度
而decimal精确类型的精度可能无法对空字符串进行一个精确的转换
刚试了下,还是出现原来的报错。
我理解的是numeric 和 decimal是一样的,可以互换使用。不知这么理解可以不?
可以这么说,,但是我不出你程序有什么问题,转换是没有问题。。分组也没有问题。。
SELECT [列 0],AVG(cast([列 7] as numeric(8,2)))
FROM [TABLE1]
GROUP BY [列 0] 只运行这些试一试。。