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


تفاوت دیتاتایپ های Nvarchar و varchar در SQL Server

تفاوت دیتاتایپ های Nvarchar و varchar در SQL Server
در این پست کوتاه تصمیم داریم به مقایسه دو دیتاتایپ Nvarchar و Varchar بپردازیم. برای افرادی که به تازگی برنامه نویسی SQL Server را شروع کرده اند، این مورد است که تفاوت بین دو دیتاتایپ Nvarchar و Varchar در چیست. در اینجا ما شباهت ها ، تفاوت ها ، مزایا ، معایب و استفاده از varchar و narchar را گردآوری کرده ایم. این جزئیات به شما کمک می کند تا به طور مناسب در برنامه ها و اپلیکیشن های خود از آنها استفاده کنید.

نرم افزار سامانه مودیان راهکار



Similarities Between Nvarchar And Varchar

این دو دیتاتایپ شباهت هایی به هم دارند که در ادامه به آنها می پردازیم.
هم varchar و هم Nvarchar متغیرهای رشته ای است که در آنها String ذخیره می شود.
حداکثر ظرفیت ذخیره سازی آنها 8000 بایت است.
هر دو آنها برای مشخص کردن ظرفیت ذخیره سازی، آرگومان های اختیاری دارند مثلا nvarchar(MAX) یا varchar(MAX) که در این صورت از همه ظرفیت ذخیره سازی این دیتاتایپ ها استفاده می شود. یا اینکه بصورت مشخص، مقدار ظرفیت ذخیره سازی در آنها را تعیین کنید. مثلا nvarchar(100) یا varchar(150)
اگر آرگومان در هر دو دیتاتایپ را مشخص نکنید، بصورت پیشفرض مقدار آنها 1 خواهد بود.
اگر مقدار آرگومان را هنگام استفاده از CAST مشخص نکنید، طول پیش فرض 30 در نظر گرفته می شود.
هنگامی که آرگومان این دو دیتاتایپ را بصورت max مشخص کنید، حداکثر 2 گیگابایت رشته ، یعنی 31-1^2 بایت را ذخیره کنید.
بر خلاف char و nchar، فضای مورد استفاده از varchar و Nvarchar، بستگی به میزان حجم رشته ای دارد که در آنها ذخیره می کنید.
از هر دو نوع دیتاتایپ رشته ای، می توان برای ذخیره رشته های غیر یونیکد استفاده کرد.
ایندکس را می توان در هر دو نوع دیتاتایپ بدون استفاده از max ایجاد کرد. اگر درصدد این باشید که varchar (max) و nvarchar (max) را ایندکس کنید ، خطا دریافت خواهید کرد.

Column ‘column-name’ in table ‘table-name’ is of a type that is invalid for use as a key column in an index

Usage Of Varchar & Nvarchar

در ادامه مثالی از Varchar و Nvarchar را مشاهده خواهید کرد:

/* Using Varchar */
Declare @v as Varchar(50);
Set @v = 'Have a good day!';
Select @v;

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

(1 row(s) affected)

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

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

(1 row(s) affected)

حالابه تفاوت های Nvarchar Varchar می پردازیم.
Varchar می تواند فقط داده های رشته ای غیر Unicode را(مشابه ASCII) ذخیره کند. در حالی که Nvarchar می تواند داده های رشته ای یونیکد را هم ذخیره کند. این داده ها را در قالب کاراکترهای UNICODE UCS-2 ذخیره می کند.
varchar برای ذخیره یک کاراکتر فقط به 1 بایت نیاز دارد این درحالیست که nvarchar برای ذخیره یک کاراکتر به 2 بایت نیاز دارد.
در varchar حجم ذخیره سازی برابر با طول واقعی داده ها + 2 بایت است. به عنوان مثال اگر رشته ای دارای 20 کاراکتر طول باشدف 20 + 2 برابر 22 بایت حجم ذخیره سازی خواهد بود. در Nvarchar اندازه ذخیره سازی برابر است با دو برابر طول واقعی داده + 2 بایت. یعنی اگر رشته ای دارای 20 کاراکتر باشد، حجم ذخیره سازی 40+2=42 بایت خواهد بود.

Varchar بدون استفاده از آرگومان max، می تواند حداکثر 8000 کاراکتر را ذخیره کند و در همین شرایط، دیتاتایپ nvarchar فقط 4000 کاراکتر را می تواند ذخیره کند.
Varchar از data page برای ذخیره سازی رشته ها استفاده می کند و Nvarchar هنگامی که ردیف داده از 8000 بایت فراتر رود ، از Nvarchar و همچنین Text page استفاده می کند.

Declare @v as Varchar(50);
Declare @n as Nvarchar(50);
Set @v = 'Have a good day!';
Set @n = N'Have a good day!';
Select DATALENGTH(@v), DATALENGTH(@n);

-- Results:
----------- -----------
16 32

(1 row(s) affected)

خب، حالا به مزایا و معایب Nvarchar و Varchar می پردازیم.

مزیت: Varchar فضای ذخیره فیزیکی کمتری را اشغال می کند زیرا طول ذخیره آن برابر با طول واقعی داده + 2 بایت است. ولی Nvarchar از چندین زبان پشتیبانی می کند و بنابراین هر داده یونیکد را می توان بدون نگرانی در مورد تغییر در این دیتاتایپ ذخیره کرد.

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

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

همچنین در پست بعدی در مورد تفاوت دیتاتایپ های char و nchar در SQL Server صحبت خواهیم کرد.


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

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

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


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