خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


تفاوت دیتاتایپ های char و nchar در SQL Server

تفاوت دیتاتایپ های char و nchar در SQL Server
در پست قبلی در خصوص تفاوت دیتاتایپ های Nvarchar و varchar در SQL Server صحبت کردیم و در این پست به بررسی تفاوت بین nchar و char می پردازیم. char و nchar شباهت ها و تفاوت های بسیاری دارند. در اینجا ما به شباهت ها ، تفاوت ها ، مزایا ، معایب و مورد استفاده این دیتاتایپ خواهیم پرداخت. بررسی این دیتاتایپ ها در SQL Server به شما کمک می کند تا به طور موثرتر و مفید از آنها در نرم افزارها و اپلیکیشن های خود استفاده کنیم.

سیستم یکپارچۀ سازمانی راهکار
ابتدا به شباهت هایی که این دو دیتاتایپ دارند، می پردازیم.


Char و nchar هر دو دارای طول رشته ای ثابت هستند.
حداکثر ظرفیت ذخیره سازی آنها 8000 بایت است.
هر دوی آنها دارای آررگومان برای مشخص کردن تعداد کاراکتر برای ذخیره سازی هستند و اگر آرگومان ورودی را مشخص نکنید، بصورت پیشفرض مقدار آن 1 در نظر گرفته می شود.
اگر از هر دوی اینها در کوئری استفاده کرده باشید و تابع CAST را بکار برده باشید، مقدار پیشفرض آنها 30 خواهد بود.
بر خلاف varchar و nvarchar، فضای استفاده شده توسط char و nchar بدون در نظر گرفتن طول رشته ذخیره شده در آنها به صورت ثابت خواهد بود. این دو فضای ذخیره سازی را بر اساس آرگومانی که شما تعیین کرده اید، رزرو می کنند.
از هر دو نوع دیتاتایپ می توان برای ذخیره رشته های غیر یونیکد استفاده کرد.
هر دو نوع دیتاتایپ را می توان Index گذاری کرد.
در ادامه مثالی ساده از استفاده Char و Nchar را مشاهده می کنید:

/* Using Char */
Declare @c as Char(30);
Set @c = 'Have a good day!';
Select @c;

/*Results:*/
------------------------------
Have a good day!

(1 row(s) affected)

/* Using Nchar */
Declare @n as Nchar(30);
Set @n = 'Have a good day!';
Select @n;

/*Results:*/
------------------------------
Have a good day!

(1 row(s) affected)

حالا به تفاوت های دیتاتایپ های Char و Nchar می پردازیم.
Char فقط رشته های non-Unicode را می تواند ذخیره سازی کند و Nchar علاوه بر غیر یونیکد، ذخیره سازی رشته های Unicode را هم می تواند انجام دهد و داده ها را غالب کاراکترهای UNICODE UCS-2 ذخیره می کند.
Char برای ذخیره یک کاراکتر فقط به 1 بایت نیاز دارد. Nchar برای ذخیره یک کاراکتر به 2 بایت نیاز دارد.
در Char سایز ذخیره سازی برابر است با سایزی که هنگام اعلان متغیر می دهید. مثلا Declare @c As Char(20) به این معنی است که حجم ذخیره سازی 20 کاراکتر یا 20 بایت است. در Nchar این مقدار دو برابر می شود. هر مقداری که در زمان اعلان متغیر از نوع nchar مشخص کنید، دو برابر آن در نظر گرفته می شود.
Char تا 8000 کاراکتر و Nchar تا نصف آن یعنی 4000 کاراکتر را در خود ذخیره می کند.

اگر به مثال زیر توجه کنید، متغیرهای char و nchar با سایز 30 بایت اعلان شده اند. رشته مورد نظر ما Have a good day می باشد که فقط 16 کاراکتر می باشد و اگر طول ذخیره سازی داده در این دیتاتایپ های را با DATALENGTH بررسی کنید، برای Char مقدار 30 و برای nchar مقدار 60 می باشد. دلیل این است که هر دو نوع دیتاتایپ از طول ثابت برخوردار هستند و هر مقداری که در زمان تعریف متغیر اعلان کرده باشید، همان مقدار فضا اشغال می شود حتی اگر تعداد کاراکترهای رشته از آن هم کمتر باشد و nchar دو برابر مقداری که برایآن تعریف کرده اید، فضا اشغال می کند.

Declare @c as Char(30);
Declare @n as Nchar(30);
Set @c = 'Have a good day!';
Set @n = N'Have a good day!';
Select DATALENGTH(@c), DATALENGTH(@n);

/*Results:*/
----------- -----------
30 60

(1 row(s) affected)


خب، حالا به مزایا و معایب Nchar و char می پردازیم و همچنین مورد به مورد استفاده هر دو هم نگاهی خواهیم داشت.
مزیت: char فضای ذخیره فیزیکی کمتری را اشغال می کند زیرا طول ذخیره آن دقیقا برابر با مقداری است که هنگام تعریف متغیر بدان تخصیص داده اید. ولی Ncharاز چندین زبان پشتیبانی می کند و بنابراین هر داده یونیکد را می توان بدون نگرانی در مورد تغییر در این دیتاتایپ ذخیره کرد.

معایب: اگر می خواهید داده یونیکد را در ستون charذخیره کنید ، باید از روش تبدیل استفاده کنید ولی Ncharاز فضای ذخیره فیزیکی بیشتری را اشغال می کند زیرا طول ذخیره داده در آن برابر با دو برابر طول واقعی داده است.

مورد استفاده: Char زمانی که قصد دارید داده هایی با کاراکترهای non-Unicode ASCII را ذخیره کنید، می تواند مفید باشد و Ncharبرای ذخیره سازی داده های Unicode و همچنین اگر قصد ذخیره سازی داده ها با زبان های مختلف را دارید، مفید است.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز