برخی از حروف فارسی به چند شکل و به اصطلاح بر اسا Character Set های مختلف نوشته میشوند
مثلا:
"ک" و "ك"
"ی" و "ي"
که در اصل شکلهای دوم عربی هستند
حالا اگر در پایگاه دادههای شما هردو "ک" و هردو "ی" ذخیره شده باشند باید چهکار کرد؟
مثلا شما میخواهید یک Select بنویسید که تمام کسانی که نام آنها "بابک" است را برای شما بیاورد
دو نفر با نام بابک در جدول شما ذخیره شدهاند یکی با "ک" و دیگری با "ك"
یک روش این است که دو شرط برای Select بگذارید که هردو بابک را چک کند، ولی اگر متنی که در حال جستجوی آن هستید طولانی باشد چه؟ اصلا اگر در متن شما هم "ک" وجود داشت و هم "ی" چه؟ یعنی باید ترکیب تمام حالات مختلف را در شرطتان اعمال کنید؟
در واقع اگر مجبور باشید باید این کار را بکنید ولی بهجای نوشتن تمام متن در حالات مختلف میتوانید توابعی بنویسید که این کار را برای شما انجام بدهند، این کدیاست که من از آن استفاده میکردم:
string MakeitFarsi(string NetString)
{
NetString = NetString.Replace((char)1705, (char)1603);
return NetString.Replace((char)1740, (char)1610);
}
این تابع کارکترهای عربی را با نظایر فارسی آنها معاوضه میکند
میتوانید سه تابع دیگر هم برای جستجوی کارکترهای عربی و ترکیب آنها بنویسید، ولی پیشنهاد من این است که هنگام data entry یعنی وقتی که در حال ثبت اطلاعات در پایگاه دادهها هستید آنها را استاندارد سازی کنید، مثلا همه کارکترهای عربی را در آنها فارسی کنید و هنگام انجام جستجو فقط بهدنبال کارکترهای فارسی بگردید، بهاین ترتیب یک تابع مثل تابع فوق کفایت میکند، البته با این شرط که همانطور که گفتم، یک بار هنگام ثبت اطلاعات از آن استفاده کنید و یک بار هم هنگام بازیابی.
هیچ نظری موجود نیست:
ارسال یک نظر