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

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

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 6848
هوش مصنوعی

پاسخ هوش مصنوعی

در SQL Server، تفاوت اصلی بین نوع داده های varchar و nvarchar به نوع کاراکترهایی که هر کدام ذخیره می کنند مربوط می شود.

1. نوع داده varchar:

varchar(n)

این نوع داده برای ذخیره سازی کاراکترهای ASCII (انگلیسی و کاراکترهای مشابه) استفاده می شود. در واقع، varchar به هر کاراکتر ASCII یک بایت اختصاص می دهد. به عنوان مثال، اگر شما بخواهید 100 کاراکتر را ذخیره کنید، به 100 بایت فضای ذخیره سازی نیاز خواهید داشت.

2. نوع داده nvarchar:

nvarchar(n)

از طرف دیگر، nvarchar برای ذخیره سازی کاراکترهای Unicode طراحی شده است و می تواند کاراکترهای چند زبانه، از جمله فارسی، را ذخیره کند. هر کاراکتر در nvarchar دو بایت مصرف می کند. بنابراین برای ذخیره 100 کاراکتر، به 200 بایت فضای ذخیره سازی نیاز خواهد بود.

به طور کلی، اگر شما قصد دارید اطلاعاتی را ذخیره کنید که شامل کاراکترهای غیر ASCII (مانند کاراکترهای فارسی) باشد، بهتر است از نوع داده nvarchar استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : 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
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود