تفاوت نوع داده ای varchar و nvarchar در Sql Server چیست ؟
لطفا بفرمایید تفاوت نوع داده ای varchar و nvarchar در Sql Server چیست ؟ برای ذخیره سازی اطلاعات فارسی استفاده از کدام Data Type بهتر است ؟
پاسخ هوش مصنوعی
در SQL Server، تفاوت اصلی بین نوع داده های varchar
و nvarchar
به نوع کاراکترهایی که هر کدام ذخیره می کنند مربوط می شود.
1. نوع داده varchar
:
varchar(n)
این نوع داده برای ذخیره سازی کاراکترهای ASCII (انگلیسی و کاراکترهای مشابه) استفاده می شود. در واقع، varchar
به هر کاراکتر ASCII یک بایت اختصاص می دهد. به عنوان مثال، اگر شما بخواهید 100 کاراکتر را ذخیره کنید، به 100 بایت فضای ذخیره سازی نیاز خواهید داشت.
2. نوع داده nvarchar
:
nvarchar(n)
از طرف دیگر، nvarchar
برای ذخیره سازی کاراکترهای Unicode طراحی شده است و می تواند کاراکترهای چند زبانه، از جمله فارسی، را ذخیره کند. هر کاراکتر در nvarchar
دو بایت مصرف می کند. بنابراین برای ذخیره 100 کاراکتر، به 200 بایت فضای ذخیره سازی نیاز خواهد بود.
به طور کلی، اگر شما قصد دارید اطلاعاتی را ذخیره کنید که شامل کاراکترهای غیر ASCII (مانند کاراکترهای فارسی) باشد، بهتر است از نوع داده nvarchar
استفاده کنید.
تفاوت داده های char، nchar، varchar و 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 ستون داریم.
- ستون col1 می تواند رشته هایی با حداکثر طول 50 کاراکتر در خود جا دهد. اگر طول رشته کمتر از 50 کاراکتر باشد به اندازه همان 50 کاراکتر فضا اشغال می شود و اگر بیشتر از 50 کاراکتر باشد ذخیره نمی شود.
- ستون col2 هم مانند ستون قبل می باشد با این تفاوت که برای ذخیره سازی حروف عربی و فارسی هم مناسب می باشد. نکته اینکه برای ذخیره سازی حروف عربی و فارسی از varchar هم می توانید استفاده کنید. در ادامه مثالی به شما نشون میدم.
- ستون های col3 و col4 برای ذخیره رشته تا حداکثر 50 کاراکتر مناسب می باشد. در صورتی که طول رشته کمتر از 50 کاراکتر باشد به اندازه طول رشته فضا اشغال می شود و در صورتی که بیشتر باشد ذخیره نمی شود.
- در ستون های col5 و col6 هم مشخص کردیم که به اندازه طول رشته فضا اسغال بشه. حالا ممکنه رشته 10 کاراکتر باشه یا اینکه 1000 کاراکتر. در واقع اندازه ستون رو متغیر گذاشتیم.
نکته : اگر نوع داده ای رو varchar یا char تعریف کردید باز هم میتونید کاراکترهای فارسی یا عربی در اون ذخیره کنید. به مثال زیر توجه کنید :
Insert Into Table 1
(col1, col2, col3, col4)
Values
(N'حمید',
'حمید',
N'رضا'
'رضا')
در مثال بالا در ستونهای col1 و col3 که char و varchar هستند با گذاشتن کاراکتر N به صورت یونیکد ذخیره سازی رو انجام دادیم.
معمولا در پروژه های مدرن و بزرگ از نوع داده ای nvarchar بیشتر از سایر انواع داده ای استفاده میشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )