آشنایی کامل با دستورات تبدیل نوع Convert و Cast

6527

تبدیل یک مقدار (cast)

در بیشتر مواقع، مقداری که کاربر به پایگاه داده ارائه می کند، از نوع رشته است. چنانچه مقدار مورد انتظار شما نیز رشته باشد، در آن صورت هیچ مشکلی پیش نمی آید. اما اگر مقداری که کاربر فراهم می کند از نوعی غیر از رشته است، برای مثال کاربر به عنوان مقدار یک عدد ارائه می کند، در آن صورت پیش از بکار بردن مقدار بایستی آن را به نوع مورد نیاز تبدیل کرد. بدین معنی که می بایست آن را از رشته به نوع داده ای مورد انتظار تبدیل نمود.
برای این منظور (تبدیل مقدار)، زبان T-SQL تابع CAST() را فراهم می کند. نحوه ی استفاده از آن به ترتیب زیر می باشد:

CAST ( Expression AS DataType [ ( length ) ] )
 

آرگومان Expression آن مقداری است که باید تبدیل شود. DataType نوع داده ای است که می خواهید مقدار آرگومان Expression به آن تبدل شود. DataType می تواند تمامی انواع داده ای که در درس 4 به آن پرداختیم، باشد.
چنانچه تابع مزبور موفق به تبدیل مقدار نشد، یک پیام خطا صادر خواهد کرد. T-SQL یک تابع دیگری به نام TRY_CAST ارائه می کند که می تواند جایگزینی برای CAST باشد (در صورت کارگر نبودن cast می توان از try-cast کمک گرفت). نحوه ی کلی استفاده از آن به صورت زیر می باشد:

TRY_CAST ( expression AS data_type [ ( length ) ] )

ین تابع همان آرگومان های CAST را می پذیرد. تفاوت میان دو تابع یاد شده این است که TRY_CAST() در صورت عدم موفقیت در تبدیل، مقدار NULL را برمی گرداند. توصیه می شود بجای CAST() از TRY_CAST() استفاده کنید.

تبدیل یک مقدار (Convert)

مانند CAST()، تابع CONVERT() برای تبدیل یک مقدار بکار می رود. با این حال دو تابع ذکر شده از یک جنبه با هم تفاوت دارند. تابع CONVERT بر خلاف CAST، این قابلیت را دارد که مقداری را از نوع اصلی و اولیه ی آن به یک نوع کاملا متفاوت تبدیل کند، برای مثال رشته را به عدد تبدیل کند و عکس آن.
دستور نحوی تابع CONVERT() به شرح زیر می باشد:

CONVERT(DataType [ ( length ) ] , Expression [ , style ])
ولین آرگومان باید یک نوع داده ای تعریف شده (انواع داده ای که پیش تر معریف کردیم) باشد. چنانچه مقداری را به نوع داده ای رشته (varchar، nvarchar، char، nchar) یا باینری تبدیل می کنید، بایستی حداکثر تعداد کاراکترهای مجاز را نیز در پرانتز مقابل نوع داده ای یا data type (در جای آرگومان length) مشخص نمایید.
همان گونه که در خصوص تابع CAST() تشریح شد، آرگومان Expression مقداری است که می بایست تبدیل شود (در جای آرگومان Expression مقداری که باید تبدیل شود را قرار دهید).
اگر عملیات تبدیل بر روی مقداری از نوع date و time اجرا شود، در آن صورت آرگومان style (که درواقع یک عدد می باشد) مشخص می کند تبدیل چگونه صورت گرفته یا ادامه یابد.
تابع CONVERT() در صورت عدم موفقیت در تبدیل، یک خطا صادر می کند.
به دلیل وجود برخی از مشکلات که ممکن است در اثر فرایند تبدیل رخ دهد و برطرف ساختن آن ها، T-SQL تابعی به نام TRY_CONVERT را ارائه می دهد. این تابع می تواند جایگزینی برای CONVERT() باشد. نحوه ی کلی استفاده از آن به شرح زیر می باشد:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
آرگومان ها بین دو تابع تبدیل نوع یکسان می باشد. تنها تفاوت موجود این است که در صورت عدم موفقیت در تبدیل،TRY_CONVERT() بجای صدور خطا، مقدار NULL را برمی گرداند.



از مجموع 63 رأی

فاقد نظر