دسته بندی ها
16:02 1401/02/11

تفاوت نوع داده ای varchar و nvarchar در Sql Server چیست ؟

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 6702
پاسخ دهنده : fateme 12:24 1401/02/12

تفاوت داده های char، nchar، varchar و nvarchar چیست ؟

تفاوت انواع داده ای char و varchar و nchar و nvarchar

 

سوال شما در مورد تفاوت بین Data Type های varchar و nvarchar هست البته ولی در اینجا بهتره از Data Type های char و nchar هم نام ببرم چون تا حد زیادی مشابه با varchar و nvarchar هست.

در یک نگاه کلی و به طور خلاصه تفاوت های زیر وجود داره :

  • نوع داده ای nchar و nvarchar توانایی ذخیره کاراکترهای Unicode رو دارن. (برای حروف فارسی و عربی مناسب هستند.)
  • نوع داده ای char و varchar توانایی ذخیره کاراکترهای Unicode رو ندارن.
  • انواع داده ای char و nchar دارای طول ثابت هستن. وقتی شما یک فیلد را مثلا به صورت char(5) تعریف می کنید سلولهای این ستون به اندازه 5 کاراکتر فضا اشغال می کنن. حتی اگر سلول خالی هم باشه باز هم به اندازه 5 کاراکتر فضا اشغال میشه.
  • انواع داده ای varchar و nvarchar دارای ول متغیر هستن. یعنی اگر یک ستون با نوع داده ای varchar(20) داشته باشید و مثلا عبارت Ali در آن ذخیره شود فقط 3 کاراکتر فضا اشغال می شود. در واقع حداکثر طولی که این ستون میتواند اشغال کند 20 می باشد.

به مثال های زیر توجه کنید :

Create Table Table1 (
   col1 char(50),
   col2 nchar(50),
   col3 varchar(50),
   col4 nvarchar(50),
   col5 varchar(max),
   col6 nvarchar(max)
)

در کوئری بالا یک جدول با 6 ستون داریم.

  1. ستون col1 می تواند رشته هایی با حداکثر طول 50 کاراکتر در خود جا دهد. اگر طول رشته کمتر از 50 کاراکتر باشد به اندازه همان 50 کاراکتر فضا اشغال می شود و اگر بیشتر از 50 کاراکتر باشد ذخیره نمی شود.
  2. ستون col2 هم مانند ستون قبل می باشد با این تفاوت که برای ذخیره سازی حروف عربی و فارسی هم مناسب می باشد. نکته اینکه برای ذخیره سازی حروف عربی و فارسی از varchar هم می توانید استفاده کنید. در ادامه مثالی به شما نشون میدم.
  3. ستون های col3 و col4 برای ذخیره رشته تا حداکثر 50 کاراکتر مناسب می باشد. در صورتی که طول رشته کمتر از 50 کاراکتر باشد به اندازه طول رشته فضا اشغال می شود و در صورتی که بیشتر باشد ذخیره نمی شود.
  4. در ستون های col5 و col6 هم مشخص کردیم که به اندازه طول رشته فضا اسغال بشه. حالا ممکنه رشته 10 کاراکتر باشه یا اینکه 1000 کاراکتر. در واقع اندازه ستون رو متغیر گذاشتیم.

 

نکته : اگر نوع داده ای رو varchar یا char تعریف کردید باز هم میتونید کاراکترهای فارسی یا عربی در اون ذخیره کنید. به مثال زیر توجه کنید :

Insert Into Table 1 
   (col1, col2, col3, col4)
Values
   (N'حمید',
    'حمید',
    N'رضا'
     'رضا')

در مثال بالا در ستونهای col1 و col3 که char و varchar هستند با گذاشتن کاراکتر N به صورت یونیکد ذخیره سازی رو انجام دادیم.

معمولا در پروژه های مدرن و بزرگ از نوع داده ای nvarchar بیشتر از سایر انواع داده ای استفاده میشه.

ویرایش شده در دوشنبه 12 اردیبهشت 1401 ساعت 12:29:29
به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود