تفاوت varchar و nvarchar در SQL Server
دلیل تفاوت در نتایج مربوط به نحوه ذخیرهسازی دادهها در انواع مختلف دادههای رشتهای در SQL Server است. در SQL Server، nvarchar برای ذخیره دادههای یونیکد (Unicode) استفاده میشود، در حالی که varchar برای ذخیره دادههای غیر یونیکد (non-Unicode) استفاده میشود.
توضیحات:
nvarchar:
nvarchar دادهها را به صورت یونیکد (UTF-16) ذخیره میکند و هر کاراکتر یونیکد 2 بایت حافظه اشغال میکند.
varchar:
varchar دادهها را به صورت غیر یونیکد (ASCII یا UTF-8) ذخیره میکند.
هر کاراکتر غیر یونیکد 1 بایت حافظه اشغال میکند.
مثال
DECLARE @MyStr1 NVARCHAR(5) = N'Text';
DECLARE @MyStr2 VARCHAR(5) = 'Text';
SELECT DATALENGTH(@MyStr1) AS St1Len, DATALENGTH(@MyStr2) AS St2Len;
نمایش نتیجه: