دسته بندی ها
12:04 1400/07/01

دلیل خطای Arithmetic overflow error converting expression to data type int

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5824
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "Arithmetic overflow error converting expression to data type int" به این معنی است که مقدار مجموعی که می خواهید محاسبه کنید، از محدوده نوع داده ی int بیشتر است. در SQL Server، نوع داده int می تواند مقادیری از -2,147,483,648 تا 2,147,483,647 را نگه داری کند.

برای رفع این خطا، می توانید نوع داده ورودی را به bigint تغییر دهید یا از تابع CAST برای تبدیل نوع داده استفاده کنید. در زیر یک نمونه از نحوه انجام این کار آورده شده است:

Select sum(cast(up.PackageMainPrice as bigint))
From UserPackage_Tbl up Join Package_Tbl p on up.PackageID = p.PackageID 
where up.ActiveDeActive = 0 and PackageMainPrice > 0

استفاده از bigint به شما اجازه می دهد که مقادیر بزرگتری را محاسبه کنید بدون اینکه با خطای سرریز مواجه شوید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 14:24 1400/07/02

دلیل خطای Arithmetic overflow error converting expression to data type int در Sql Server

دلیل این خطا سرریز شدن مقدار هست. یعنی شما یک فیلد دارید به نام PackageMainPrice که احتمالا از نوع int تعریفش کردید و در کوئری میخواید از Sum استفاده کنید. خطای شما به این خاطر هست که مقدار جمع مقادیر از مقدار مجاز int بیشتر شده. باید کوئری خودتون رو به صورت زیر تغییر بدید.

Select sum(Cast(up.PackageMainPrice As Bigint))
From UserPackage_Tbl up Join Package_Tbl p on up.PackageID = p.PackageID 
where up.ActiveDeActive = 0 and PackageMainPrice > 0

توسط متد Cast مشخص می کنیم که بیشتر از مقدار int هم بتونیم جمع کنیم و نمایش بدیم.

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود