错误信息

System.Data.SqlClient.SqlException (0x80131904): 在将 varchar 值 '5.00' 转换成数据类型 int 时失败。

排查过程


1、确认是不是字段的问题

经过确认,并没有字段是int的


2、通过跟踪,最终确认为是某段sql,但是这段sql没有任何转换的语句,也就是convert语句,

		INSERT INTO msSystem.dbo.LPF_MessageTemplateList_Ddetails(
          WXOpenId,  
		  WMOpenId,
          CardNum ,
          IsSend ,
          SendStatus ,
          SendTime ,
          AddTime ,
          IsSuccess ,
          MessageTemplateList ,
          UserSource ,
          UserMobile ,
		  SendTimeForPlan,
          SuccessMessage ,
		  checkedBrand,
          WXContent ,
          WMContent ,
          SmsContent		
        )
SELECT  @wxopenid,@wmopenid,@CardNum,0,0,GETDATE(),GETDATE(),0, 63
,'WX_reg' 
,@khhysj,GETDATE(),NULL,1,NULL
,'内衣|'+CAST(@mz AS VARCHAR(5))+'元优惠券,满'+CAST(CASE WHEN @meje<@mz THEN @mz ELSE @meje END  AS VARCHAR(4))+'元可用|'+CONVERT(CHAR(10),DATEADD(D,-1,DATEADD(M,1,CONVERT(CHAR(7),@couponEndDate,23)+'-01')),23)+'|全品类可用,点击进入小程序查看附近门店。'
,''  

最终得到老师傅的指点,在进行比较的时候,sql server会先进行转换,

回到当前的实例,是因为@meje<@mz触发,其中@meje在代码上面定义为int,@mz定义为varchar,在比较的时候,就会将@mz转换为跟@meje相同的格式,也就是int,这时因为@mz值为5.00,转换为int的时候就抛出了异常

总结:在进行比较的时候,也会进行数据类型的转换