PDA

View Full Version : سئوال کاملا مبتدی- فرق nchar با varchar



raravaice
سه شنبه 25 دی 1386, 11:23 صبح
سلام

دوستان از بابت این سئوال غیر حرفه ای معذرت میخوام ولی این سئوال خیلی وقت هست که برام مطرحه.

فرق بین nchar و nvarchar تو چیه؟

ممنون

anubis_ir
سه شنبه 25 دی 1386, 12:01 عصر
به مثال زیر دقت کنید

nchar(5) = "ab "
nvarchar(5) = "ab"

nchar تعداد کاراکتر باقیمانده و مقدار دهی نشده را با space‌ مقدار دهی می‌کند.
مثلا اگر طول، 5 کاراکتر باشد و دو کاراکتر آن پر شود، سه تای باقیمانده با space پر می‌شود.

raravaice
سه شنبه 25 دی 1386, 12:18 عصر
سلام
ممنون

فرمایش شما متین ولی منظور من از تفاوت کاربرد اختصاصی این دو نوع بود یعنی nvarchar برای چه مواقعی در نظر گرفته شده و nchar برای چه مواقعی؟

anubis_ir
سه شنبه 25 دی 1386, 12:37 عصر
از char زمانی استفاده کنید که انتظار دارید تمام داده‌های ورودی با یک طول مشخصی وارد شوند. (مثلا هش محاسبه شده توسط MD5 یک طول همیشه ثابتی دارد)
سرعت جستجو در داده‌هایی از نوع char‌ بیشتر است چون سیستم نیازی ندارد تا انتهای رشته وارد شده را محاسبه کند (همانند varchar). همچنین بحث دیگر fragmentation در داده‌هایی از نوع varchar است (داده‌هایی که هر بار وارد می‌شوند یا آپدیت خواهند شد طول متغیری دارند) که کارآیی را کاهش می‌دهند. این مورد در char با طول ثابت که تقریبا همیشه در یک مکان آپدیت می‌شوند کمتر است.
برای داده‌هایی با طول کمتر از 255 بهتر است از char استفاده کنید. بیشتر از آن varchar و متن بیش از اندازه بزرگ بهتر است از نوع text باشد.

hesam_a110
چهارشنبه 26 دی 1386, 08:07 صبح
:قلب::قلب:درود بر شما
تا اونجا که بنده اطلاع دارم همانجور که آقای anubis_ir گفتند تفاوت nchar و varchar توی گرفتن فضا هستش
چیزی که به طور کلی می تونیم بگیم اینکه نوع فیلد های که اول آنها N هستش مخفف
NATIONAL هست که می تونیم داخل او فیلد زبان هی دیگری را هم نگه داری کنیم که احتمالا برای شما اتفاق افتاده که مقداری فارسی را داخل char بریزید و موقع بازیابی ؟؟؟؟؟ این الائم را به ما بر میگرداند در صورتی که اگر Nchar باشه موردی با ؟؟؟؟ ندارد ولی مشکل اون فضای اضافه ای است که می گیرد
در جایی که در نوع فیلد ها اول آن var دیده شود به معنی صرف نظر کردن از فضای خالی می باشد که آقای anubis_ir توضیح دادند
پیروز و نیک باشید

anubis_ir
چهارشنبه 26 دی 1386, 08:52 صبح
شما از char هم می‌تونید برای ثبت داده فارسی استفاده کنید. فقط باید collation رو به عربی تنظیم کنید.

mpmsoft
سه شنبه 28 آبان 1387, 10:11 صبح
دوستان پس بنابراین وقتی می زنیم Varchar(50) منظور از عدد 50 چیه ؟ داریم طول رو مشخص می کنیم یا چیز دیگه ؟

اگر طول هست پس چرا می گیم این نوع تایپ طول متغیری داره و ثابت نیست

amin_alexi
سه شنبه 28 آبان 1387, 10:31 صبح
منظور اینه که تا 50 کاراکتر ظرفیت داره و می تونه فقط بین 0 تا 50 کاراکتر در این فیلد اطلاعات وارد کرد !
هدف گذاشتن یک سقف برای حداکثر کاراکتر مجاز !