如果不需要错误数据直接 使用isnumeric来判断是否是数字,是返回1,不是返回0
上面改成这样即可
select a,b
into #M
from S
--这里可以显示转换cast isnumeric(b) as int,也可以不转换 数据库会默认隐式转换
select sum( Case when ISNUMERIC(b) = 1 then b ELSE 0 END ) from #M
2.如需要找到错误数据可以
SELECT *
FROM(
select *,Case when ISNUMERIC([ID]) =1 then [ID] ELSE 0 END AS 'aa' from #M
)as t WHERE aa=0
3.或用like方式也能找出不是数字的字符串
select *
from #M
WHERE id like '[0-9][0-9][0-9]'