PDA

View Full Version : جستجو در دیتابیس (برعکس Like)



pedram.11
سه شنبه 08 اسفند 1391, 12:50 عصر
سلام، ببخشید من یه متنی دارم که میخوام به اینصورت سرچ کنم که رکورد هایی که قبول بشن که اون رکوردها جزء متن باشند نه اینکه متن جزء اون کوردها باشه، یعنی یه چیزی برعکس دستور زیر باشه:
Like %...%
مثلا فرض کنید توی یه سلول عدد 1 دارم، حالا میخوام اگه عدد 10 رو هم جستجو کنم اون رکورد رو هم قبول کنه

veniz2008
سه شنبه 08 اسفند 1391, 13:02 عصر
سلام.
از Not Like استفاده کنید.

pedram.11
سه شنبه 08 اسفند 1391, 13:19 عصر
سلام ممنون از جوابتون اما این اون چیزی نیست که من میخوام، عرض کردم بجای اینکه متنی که جستجو میکنیم جزء آیتم دیتابیس باشه، آیتم جزء متن باشه، اگه کوئری در این زمینه هست بفرمائید ممنون میشم

Mahmoud.Afrad
سه شنبه 08 اسفند 1391, 15:42 عصر
خب همینی که میگید رو پیاده کنید.

در حالت معمولی اگر فیلد شامل پارامتر باشه کوئری به شکل زیر در میاد:
select * from [Table-Name] where [Column-Name] like '%' + @parameter + '%'

حالا اگر بخواهیم پارامتر شامل فیلد باشه کافیه جای فیلد و پارامتر رو در شرط جابجا کنید:
select * from [Table-Name] where @parameter like '%' + [Column-Name] + '%'

sgn2006
سه شنبه 08 اسفند 1391, 15:53 عصر
سلام
می شه مثال بزنی.....

pedram.11
سه شنبه 08 اسفند 1391, 17:24 عصر
خب همینی که میگید رو پیاده کنید.

در حالت معمولی اگر فیلد شامل پارامتر باشه کوئری به شکل زیر در میاد:
select * from [Table-Name] where [Column-Name] like '%' + @parameter + '%'

حالا اگر بخواهیم پارامتر شامل فیلد باشه کافیه جای فیلد و پارامتر رو در شرط جابجا کنید:
select * from [Table-Name] where @parameter like '%' + [Column-Name] + '%'

مرسی؛ در مورد کد اولتون صحیح اما خط بعدی منم قبلا همچین فکری کردم اما این حالت ارور زیر رو میده:
No value given for one or more required parameters.
خودمم طور دیگه بصورت زیر نوشتم اما هیچ رکوردی رو انتخاب نمیکنه:
select * from Table where '%" + Parameter + "%' like Column

Mahmoud.Afrad
سه شنبه 08 اسفند 1391, 18:16 عصر
اونا تک کوتیشن هست نه دابل کوتیشن. اصلاح کنید.

pedram.11
سه شنبه 08 اسفند 1391, 19:56 عصر
اون دابل کوتیشین ها برای شروع و پایان رشته هست

Mahmoud.Afrad
سه شنبه 08 اسفند 1391, 20:36 عصر
چرا توجه نمیکنید. اونا تک کوتیشن و جزئی از کوئری هستند. مثال:

cmd = new SqlCommand("select * from tbl where @name like '%' + name + '%'", con);
cmd.Parameters.AddWithValue("@name", textBox1.Text);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}