نمایش نتایج 1 تا 2 از 2

نام تاپیک: The conversion of the varchar value overflowed an INT1

  1. #1

    The conversion of the varchar value overflowed an INT1

    سلام دوستان من کد زیر رو نوشتم


    SELECT *,cp.id,cp.name

    FROM dbo.TablesLog tl


    inner JOIN Receipted r on tl.RecordID=r.id
    left join Central100.central.def.provinces cp on cp.id=left(right(R.Barcode,18),3)





    منتها این خطا رو میده
    The conversion of the varchar value '611' overflowed an INT1 column. Use a larger integer column.
    نوع cp.id = smallint و نوع barcode =decimal هست
    وقتی cast میکنم خروجی سلکت Id و name
    Null میشن

  2. #2
    کاربر دائمی آواتار bitasoft.ir
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    جنگلهای تاریک اصفهان
    سن
    44
    پست
    279

    نقل قول: The conversion of the varchar value overflowed an INT1

    این خطا به دلیل تلاش برای تبدیل یک مقدار varchar به نوع smallint (cp.id) رخ می‌دهد که مقدار انتخابی از نوع varchar بیشتر از محدوده نوع smallint (INT1) است. برای حل این مشکل می‌توانید به چندین راه اقدام کنید:
    تغییر نوع cp.id به یک نوع بزرگتر:
    اگر مقادیر موجود در cp.id بیشتر از محدوده smallint بودند، می‌توانید نوع داده آن را به یک نوع بزرگتر مثل int یا bigint تغییر دهید.
    ALTER TABLE dbo.TablesLog
    ALTER COLUMN id INT; -- یا bigint
    البته باید مطمئن شوید که مقادیر موجود در cp.id از محدوده نوع جدید پشتیبانی می‌کنند.
    استفاده از TRY_CAST یا TRY_CONVERT:
    اگر نمی‌خواهید نوع داده cp.id را تغییر دهید، می‌توانید از توابع TRY_CAST یا TRY_CONVERT برای تبدیل امن مقدار varchar به نوع smallint استفاده کنید. این توابع در صورت ناموفقیت تبدیل، NULL برگردانده می‌شوند.
    SELECT *, cp.id, cp.name
    FROM dbo.TablesLog tl
    INNER JOIN Receipted r ON tl.RecordID = r.id
    LEFT JOIN Central100.central.def.provinces cp ON cp.id = TRY_CAST(left(right(r.Barcode, 18), 3) AS SMALLINT)
    این کد با استفاده از TRY_CAST تلاش می‌کند مقدار varchar را به smallint تبدیل کند و در صورت موفقیت نتیجه را برگرداند، در غیر این صورت NULL برگردانده می‌شود.
    اطمینان از مطابقت نوع‌ها:
    مطمئن شوید که مقداری که از barcode برای تبدیل به cp.id استفاده می‌شود، به درستی مطابق با نوع smallint است. اگر مقادیر از نوع صحیح (integer) نیستند، ممکن است با مشکل مواجه شوید.
    بررسی داده‌های ورودی:
    اگر مقادیر درون barcode نادرست و ناپایدار هستند، باید از منطقی‌تر کردن داده‌های ورودی اطمینان حاصل کنید تا تبدیل به smallint مشکل‌ساز نشود. به هر حال، انتخاب بهترین راه حل بستگی به شرایط و نیازهای شما دارد، و باید با دقت و دقت به موارد فوق نگاه کنید.

    نقل قول نوشته شده توسط ly.comeng مشاهده تاپیک
    سلام دوستان من کد زیر رو نوشتم


    SELECT *,cp.id,cp.name

    FROM dbo.TablesLog tl


    inner JOIN Receipted r on tl.RecordID=r.id
    left join Central100.central.def.provinces cp on cp.id=left(right(R.Barcode,18),3)





    منتها این خطا رو میده
    The conversion of the varchar value '611' overflowed an INT1 column. Use a larger integer column.
    نوع cp.id = smallint و نوع barcode =decimal هست
    وقتی cast میکنم خروجی سلکت Id و name
    Null میشن

تاپیک های مشابه

  1. پاسخ: 3
    آخرین پست: سه شنبه 13 مرداد 1394, 00:11 صبح
  2. سوال: the conversion of the nvarchar value overflowed an int column
    نوشته شده توسط ATalebD99 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: شنبه 24 آبان 1393, 19:24 عصر
  3. سوال: پیغام The conversion of the nvarchar value '3980106195' overflowed an int column
    نوشته شده توسط دلتنگ اسمان در بخش C#‎‎
    پاسخ: 13
    آخرین پست: شنبه 24 آبان 1393, 09:35 صبح
  4. خطای Implicit conversion from data type varchar to varbinary is not allowed
    نوشته شده توسط mortezasar در بخش C#‎‎
    پاسخ: 4
    آخرین پست: پنج شنبه 16 آذر 1391, 01:48 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •