View Full Version : ایجاد جستجوی اتوماتیک
saber4166
شنبه 19 مهر 1393, 09:52 صبح
سلام دوستان چطور میشه جستجویی مثل توضیحات زیر داشته باشم
میخوام وقتی کاربر تاپ میکنه سلطان تبار هم کسایی که سلطانتبار هستن نشون بده و هم کسایی که سلطان تبار
درواقع فضای خالی رو هم در نظر بگیره و هم نگیره و تمامشون رو نشون بده؟؟؟
دلتنگ اسمان
شنبه 19 مهر 1393, 10:33 صبح
سلام
من خودم با این کد جستجو رو انجام میدم و درست جواب میده :
string query = "SELECT * from personal WHERE 1=1 ";
if (nametxt.Text != string.Empty)
query += "AND name=@name";
if (familytxt.Text != string.Empty)
query += " AND family=@family";
if (fadertxt.Text != string.Empty)
query += " AND fadername=@fadername";
SqlCommand.Parameters.AddWithValue("@name", nametxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@family", familytxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@fadername", fadertxt.Text.Trim());
مهرداد صفا
شنبه 19 مهر 1393, 10:44 صبح
سلام.
اگر منظورتون زبان sql هست که باید در تالار T-SQL مطرح می شد و با کدی شبیه به این به مقصد می رسید:
select * from table1 where name like N'FirstName%' and name like N'%lastName';
بدون در نظر گرفتن جا به جایی کلید واژه ها:
select * from table1 where name like '%FirstName%' and name like '%LastName%';
و اگر منظورتون linq و c# هست:
var q=DB.table1.Where(r=> r.Name.StartsWith("firstName") && r.Name.EndsWith("LastName"));
بدون در نظر گرفتن جا به جایی کلید واژه ها:
var q=DB.table1.Where(r=> r.Name.Contains("FirstName") && r.Name.Contains("lastName"));
saber4166
شنبه 19 مهر 1393, 11:31 صبح
سلام
من خودم با این کد جستجو رو انجام میدم و درست جواب میده :
string query = "SELECT * from personal WHERE 1=1 ";
if (nametxt.Text != string.Empty)
query += "AND name=@name";
if (familytxt.Text != string.Empty)
query += " AND family=@family";
if (fadertxt.Text != string.Empty)
query += " AND fadername=@fadername";
SqlCommand.Parameters.AddWithValue("@name", nametxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@family", familytxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@fadername", fadertxt.Text.Trim());
دوست عزیز این که یه جستجوی سادست !!!! :متفکر:
saber4166
شنبه 19 مهر 1393, 11:36 صبح
سلام.
اگر منظورتون زبان sql هست که باید در تالار T-SQL مطرح می شد و با کدی شبیه به این به مقصد می رسید:
select * from table1 where name like N'FirstName%' and name like N'%lastName';
بدون در نظر گرفتن جا به جایی کلید واژه ها:
select * from table1 where name like '%FirstName%' and name like '%LastName%';
و اگر منظورتون linq و C# هست:
var q=DB.table1.Where(r=> r.Name.StartsWith("firstName") && r.Name.EndsWith("LastName"));
بدون در نظر گرفتن جا به جایی کلید واژه ها:
var q=DB.table1.Where(r=> r.Name.Contains("FirstName") && r.Name.Contains("lastName"));
منظورم در محیط C# بوده که Query رو برای SQL ارسال میکنم
و این دستوری که شما گفتین
select * from table1 where name like '%FirstName%' and name like '%LastName%';
اگر تایپ کنم سلطان تبار هرشخصی که درش سلطان تبارباشه نشون میده مثلاً میرسلان تبار یا ...
اما من میخوام با زدن سلطان تبار هم سلطان تبار و هم سلطانتبار نشون داده بشه، و قبل و بعش هرچی بود مهم نیست مهم اینه که فضای خالی بین کلمه روو هم در نظر بگیره و هم در نظر نگیره
و فقط یک فیلد فامیلی رو میخوام ، نام و نام خانوادگی رو نمیخوام
یعنی اشتباهات تایپی که ممکنه کاربران داشته باشن برطرف بشه
plus
شنبه 19 مهر 1393, 11:49 صبح
میتونید برای جستجو فاصله ها رو (هم از مبدا هم از مقدار مورد جستجو) حذف کنید.
string lastNameToFind = txtLastName.Text.Replace(" ", String.Empty);
string query = "SELECT LastName FROM UsersTable WHERE REPLACE(LastName, ' ', '') = @LastNameToFind";
cmd.Parameters.Add("LastNameToFind", lastNameToFind);
// Execute command
البته برای پشتیبانی از Tab و... لازمه کد رو کاملتر کنید.
اسماعیل ابراهیمی
شنبه 19 مهر 1393, 13:44 عصر
جوری که شما می خوایین میشه ولی کد تمیزی نیست
شما می تونید در قسمت WHERE رشته پرس و جو ، بار رشته رو " با فاصله " و "بدون فاصله" OR کنید
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.