Sql Server
错误信息
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的时候就抛出了异常
总结:在进行比较的时候,也会进行数据类型的转换