PDA

View Full Version : سوال: سرچ کردن داده های Unicode در SQL



pesare
شنبه 25 خرداد 1392, 16:32 عصر
سلام دوستان
من یه DataBase دارم که دادهام رو بصورت Unicode درونش ذخیره میکنم اما موقع سرچ حرف "ی" رو پشتیبانی نمیکنه , کدم هم اینه

string sql = "Select * From ApFroshi Where {0} LIKE '{1}%' ORDER BY {2} ASC";
sql = string.Format(sql,this.SearchItem,this.SearchValue ,this.SearchItem);

ali_md110
شنبه 25 خرداد 1392, 19:10 عصر
سلام میتونید یک تابع اسکیول بنویسید با استفاده از دستورات Replace و حرف ی عربی رو به حرف ی فارسی تبدیل کنید و درون دیتابیس ذخیره کنید
یا تابعی بنویسید که کاراکترهای عربی را در هنگام سرچ به کاراکتر فارسی تبدیل کند معمولا حروف ی و ک مشکل دارند
یا میتونید یک تابع CLR بنویسید و درون دستور SQL استفاده کتید
من معمولا از توابع CLR استفاده میکنم
این هم مثال:

public static SqlString ToPersian(SqlString str)
{
SqlString character;
character = str.ToString().Replace("یي", "یی");
character = str.ToString().Replace("ي", "ی");

// ' SQLstr = SQLstr.ToString.Replace(ChrW(1610), ChrW(1740))
//'SQLstr = SQLstr.ToString.Replace("ی", "یي")

// ' SQLstr = SQLstr.ToString.Replace("ك", "ک")
character = str.ToString().Replace("ك", "ک");
// 'SQLstr = SQLstr.ToString.Replace(ChrW(1603), ChrW(1705))
character = str.ToString().Replace("کك", "کک");

return character.ToString().Trim();

}
طریقه استفاده در دستور اسکیول


SELECT dbo.ToPersian(نام فبلدتون) as نام مستعار

راهنمایی درباره CLR
http://barnamenevis.org/showthread.php?401889

pesare
یک شنبه 26 خرداد 1392, 08:26 صبح
من اینجوری نوشتم درست شد

string sql = "Select * From ApFroshi Where {0} LIKE N'{1}%' ORDER BY {2} ASC";
sql = string.Format(sql,this.SearchItem,this.SearchValue ,this.SearchItem);