PDA

View Full Version : مشکل در استفاده از دستور like



سمیرا55
جمعه 15 شهریور 1392, 11:50 صبح
با سلام
داخل pagam چندتا textbox دارم که میخام براساس قسمتی از متنی که کاربر وارد میکنه عمل جستجو رو انجام بده
همه شرط های دستور like رو برای textbox ها استفاده کردم و مابینشون از or استفاده کردم ولی بعضی هاشو جواب نمیده در صورتی که اگه یک شرط و بدون استفاده از or بزارم جواب میده
مشکلش از چیه؟

amin750
جمعه 15 شهریور 1392, 11:58 صبح
اینجوری نوشتی؟؟
select * from table where column_name like '%xxx%' or column_name like '%yyy%'

سمیرا55
جمعه 15 شهریور 1392, 12:12 عصر
نه من داخل صفحه سایتم دو تا textbox گذاشتم حالا میخام بر اساس اون چیزی که کاربر وارد میکنه مثلا یک textbox یا دو textbox عمل جستجو رو انجام بده این کدمه
string commandtext = "select * from tabele1 where massage_text='" + TextBox2.Text + "' or receiver='" + TextBox1.Text + "' or massage_text like N'%" + TextBox2.Text + "%' or receiver like N'%" + TextBox1.Text + "%'";

SqlCommand cmd = new SqlCommand(commandtext, co);
co.Open();

SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
GridView1.Visible = true;
co.Close();
اما وقتی میخام جستجو رو بر این اساس انجام بدم یعنی receiver like N'%" + TextBox1.Text تمامی رکوردها رو بهم نمایش میده نمیدونم مشکلش چیه

amin750
جمعه 15 شهریور 1392, 12:23 عصر
اینو دقیقا بنویس فاصله ها هم رعایت کن 2 تا ' نذاشته بودی

string commandtext = "select * from tabele1 where massage_text='" + TextBox2.Text + "'"+" or receiver='"+ TextBox1.Text +"'"+" or massage_text like N'%" + TextBox2.Text + "%' or receiver like N'%" + TextBox1.Text + "%'";

سمیرا55
جمعه 15 شهریور 1392, 12:39 عصر
من دقیقا همین رو نوشتم
string commandtext = "select * from TABELE1 where (massage_text='" + TextBox2.Text + "'"+") OR (receiver='"+ TextBox1.Text +"'"+") OR (massage_text like N'%" + TextBox2.Text + "%') OR (receiver like N'%" + TextBox1.Text + "%')";
این دفعه پرانتز گذاری هم کردم ولی وقتی در دستور SELECT به تنهایی این رو مینویسم receiver like N'%" + TextBox1.Text + "%'
درست کار میکنه اما وقتی با or ها مینویسم کار نمیکنه

amin750
جمعه 15 شهریور 1392, 12:50 عصر
توی sql همین کوئری رو بنویس ببین اصلا با or جواب میده یا نه
به جای تکست باکس هات یه مقدار دلخواه قرار بده بعد جوابش رو بگو

amin750
جمعه 15 شهریور 1392, 12:53 عصر
یه احتمال هم هست ممکنه منطق or هات درست نباشه

سمیرا55
جمعه 15 شهریور 1392, 13:09 عصر
نوشتم ولی or رو جواب نمیده
نوع داده برای این فیلدی که دارم با or جستجو میکنم nvarchar

mahdioo12194
جمعه 15 شهریور 1392, 13:17 عصر
قبل از همه تکست باکس ها N بزار!

سمیرا55
جمعه 15 شهریور 1392, 14:00 عصر
همه این کار ها رو انجام دادم اصلا 2 تا دستور ساده گذاشتم
"select * from tabele1 where (massage_text like N'%" + TextBox2.Text + "%') OR (receiver like N'%" + TextBox1.Text + "%')";
اگه هر کدوم رو به تنهایی داخل دستور SELECT بزارم درست کار میکنه ولی دوتاش باهم کار نمیکنه
چرا باید OR مشکل داسته باشه واقعا مشکلش رو نمیدونم چیه؟؟؟چون تکی تکی کار مینه

سمیرا55
جمعه 15 شهریور 1392, 15:27 عصر
من اینو امتحان کردم اگه دو تا مقایسه معمولی باشه بدون استفاده از دستور like که با or جواب میده ولی با like جواب نمیده
مثلا من اینو امتحان کردم
string commandtext = "select * from tabele1 where (massage_text='" + TextBox2.Text + "'" + ") OR (receiver='" + TextBox1.Text + "')";
این طوری با or جواب میده اما اگه این دو شرط از دستور like استفاده بشه جواب نمیده