خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
استفاده از تابع TRY_CAST در SQL Server
تابع TRY_CAST یک تابع تغییر در SQL Server است که از آن برای cast کردن مقداری به یک دیتاتایپ مشخص استفاده می شود و اگر در تبدیل موفق نشود، مقدار Null را برمیگرداند. در ادامه با مثال هایی با طرز کار و نحوه استفاده آن آشنا خواهید شد. Syntax استفاده از تابع TRY_CAST بصورت زیر می باشد.
Expression: در واقع مقداری که باید cast شود.
Datatype: هم در واقع همان نوع داده ای است که باید Expression بدان تبدیل یا cast شود.
Length: عدد صحیحی اختیاری که طول دیتاتایپ مقصد را مشخص می کند.
خب، حالا در ادامه مثال هایی از TRY_CAST را مشاهده خواهید کرد.
در اسکریپت زیر که از تابع TRY_CAST استفاده شده، برای تبدیل یک مقدار Numeric به decimal می باشد.
مثال زیر از تابع TRY_CAST برای تبدیل datetime به date استفاده می کند.
مثال زیر از تابع TRY_CAST برای تبدیل یک رشته به یک عدد صحیح استفاده می کند.
همانطور که مشاهده می کنید ، هنگامی که می خواهیم متن رشته ای را به عدد صحیح تبدیل کنیم، Try_Cast مقدار Null را برمی گرداند.
اگر همین مثال فوق را با تابع CAST انجام دهید، به جای Null خطا بر خواهد گرداند.
این بدان معناست که در صورت عدم موفقیت در تبدیل ، تابع TRY_CAST مقدار Null را برمیگرداند در حالی که تابع CAST خطا را برمی گرداند.
تابع TRY_CAST اگر تبدیل صراحتا مجاز نباشد، خطا بر میگرداند. مثلا در مثال زیر قصد تبدیل یک عدد صحیح به فرمت تاریخ است که خطا بر می گرداند.
در آخر هم باید این نکته را متذکر شویم که تابع TRY_CAST از SQL Server 2012 معرفی شده است و در نسخ قبلی، تابع TRY_CAST را نخواهید داشت.
TRY_CAST ( expression AS datatype [ ( length ) ] )
Expression: در واقع مقداری که باید cast شود.
Datatype: هم در واقع همان نوع داده ای است که باید Expression بدان تبدیل یا cast شود.
Length: عدد صحیحی اختیاری که طول دیتاتایپ مقصد را مشخص می کند.
خب، حالا در ادامه مثال هایی از TRY_CAST را مشاهده خواهید کرد.
declare @Number as numeric(9,4)
set @number = 79.8675
select TRY_CAST(@number as decimal(4,2)) as output;
در اسکریپت زیر که از تابع TRY_CAST استفاده شده، برای تبدیل یک مقدار Numeric به decimal می باشد.
مثال زیر از تابع TRY_CAST برای تبدیل datetime به date استفاده می کند.
declare @dt datetime
set @dt = getdate()
select TRY_CAST( @dt as date ) as Output ;
مثال زیر از تابع TRY_CAST برای تبدیل یک رشته به یک عدد صحیح استفاده می کند.
declare @txt as varchar(9)
set @txt ='5000'
select try_cast(@txt as int) as output
همانطور که مشاهده می کنید ، هنگامی که می خواهیم متن رشته ای را به عدد صحیح تبدیل کنیم، Try_Cast مقدار Null را برمی گرداند.
declare @txt as varchar(9)
set @txt ='microsoft'
select try_cast(@txt as int) as output
اگر همین مثال فوق را با تابع CAST انجام دهید، به جای Null خطا بر خواهد گرداند.
declare @txt as varchar(9)
set @txt ='microsoft'
select cast(@txt as int) as output
این بدان معناست که در صورت عدم موفقیت در تبدیل ، تابع TRY_CAST مقدار Null را برمیگرداند در حالی که تابع CAST خطا را برمی گرداند.
تابع TRY_CAST اگر تبدیل صراحتا مجاز نباشد، خطا بر میگرداند. مثلا در مثال زیر قصد تبدیل یک عدد صحیح به فرمت تاریخ است که خطا بر می گرداند.
declare @Number as int
select TRY_CAST(4 as date) as Output;
در آخر هم باید این نکته را متذکر شویم که تابع TRY_CAST از SQL Server 2012 معرفی شده است و در نسخ قبلی، تابع TRY_CAST را نخواهید داشت.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: