PDA

View Full Version : نوع داده ای nvarchar یا varchar



omidmehraban
جمعه 23 شهریور 1386, 01:08 صبح
با سلام خدمت دوستان عزیز:
من می خوام دنبال یک اسم در فیلد نام از نوع nvarchar بگردم،نامی که دنبالشم فارسی هست
با یک Select command شرایط خودم را برای جستجو فراهم می کنم.وبعد اون رو اجرا می کنم ولی هیچ رکوردی را برنمی گردونه.مثلا اگر دنبال نام 'علی' هستم ،چنین می نویسم:


SELECT * FROM myTable WHERE FirstName='علی'
با توجه به اینکه این نام در پایگاه داده وجود داره اما سطری بر نمی گردونه.ولی در مورد اسامی انگلیسی درست کار می کنه.مثلا 'Ali' را پیدا می کنه.
با توجه به صحبت فوق نوع داده ای فیلد نام را از nvarchar به varchar تغییر دادم.مشکل فوق حل شد ولی مشکل تازه ای پیدا شد:
اسامی فارسی که به حرف 'ی' ختم می شوند با 'ی' دونقطه دار نمایش پیدا می کنند.
بعد یه عمر تونستم این 'ی' دونقطه دار را حذف کنم که باز پیداش شد.چه طوری می تونم این مشکل را خذف کنم؟
نوع nvarchar با varchar چه تفاوت هایی داره؟
بی صبرانه منتظر راهنمایی هاتون هستم.
با تشکر.

md_bluelily
جمعه 23 شهریور 1386, 01:50 صبح
شما از همون nvarchar استفاده کن.
ولی از این query برای search استفاده کن:


SELECT * FROM myTable WHERE FirstName=N'علی'

md_bluelily
جمعه 23 شهریور 1386, 01:55 صبح
فرقشون در اینه که nvarchar قادره که کاراکترهای 2 بایتی رو ذخیره کنه در نتیجه زبانهایی مثل زبان فارسی رو باید با این حالت ذخیره کرد. ولی باید در نظر بگیرید که حجم بیشتری رو هم اشغال میکنه. پس برای ذخیره انگلیسی خیلی خیلی بهتره که از varchar استفاده کنید.

موفق باشید.

omidmehraban
جمعه 23 شهریور 1386, 17:32 عصر
با سلام و احترام خدمت md_bluelily:
تو خود نمره بیستی،مشکل حل شد.:تشویق:

پویا
شنبه 24 شهریور 1386, 13:41 عصر
اگه non-Unicode ویندوز رو روی فارسی تنظیم کنی لازم نیست از nvarchar استفاده کنی