日期:2014-05-18  浏览次数:20599 次

三个字段的和 与另一个字段比较,如何处理?
select   *   from   SC010200   where   (SC01010+SC01011+SC01012)!=SC01053

这样不行,

提示:Error   converting   data   type   nvarchar   to   numeric.

怎样转换字符类型。。。。如何处理。。谢谢

------解决方案--------------------
select * from SC010200 where (cast(SC01010 as varchar)+cast(SC01011 as varchar)+cast(SC01012 as varchar))!=SC01053

------解决方案--------------------
我都不知道你需要什么结果,如果你期望三个字段按数值相加的话,你的写法没错,但是某个字段中有非数值格式的记录存在,所以出错。
------解决方案--------------------
如果要按数值型比较,那这些字段的值都应该能转换为数值型,才能比较,否则会报错。

检查表中这些字段是否存在不能转换为数值的记录。
------解决方案--------------------
用isnumeric()函数判断哪些不能转换为数值型,如:

--不能转换为数值型的记录
select * from 表名
where isnumeric(字段名)=0

------解决方案--------------------
从错误来看,以下三个字段并不都是数字
SC01010 SC01011 SC01012
如果你要数字加起来,那就转换成数字类型吧