PDA

View Full Version : جستجوی پیشرفته بدون در نظر گرفتن کاراکتر '+' و ' '



jafarpalideh
دوشنبه 21 اسفند 1396, 09:14 صبح
با سلام
من واسه جستجو در دیتابیس از کد پایین استفاده میکنم و مشکلی ندارم ولی خواسته ام اینه که رویه دو یا سه تا فیلد جستجو رو انجام بدم .
fildname1 و fildname2 و fildname3



private void button3_Click(object sender, EventArgs e) {
string[] a = textBox1.Text.Split('+',' ');
string b = "select * from table where fildname like '%";
for (int i = 0; i < a.Length; i++)
{
if (i < a.Length - 1)
b += a[i] + "%' and fildname like '%";
else
b += a[i] + "%'";
}
MessageBox.Show(b);
}

رامین مرادی
دوشنبه 21 اسفند 1396, 09:53 صبح
چرا از in استفاده نمیکنید؟



select * from table where fildname in(items)


که میتونید items رو مثلا انجوری بدین (N'علی'،N'حسن'،N'حسین')

jafarpalideh
دوشنبه 21 اسفند 1396, 10:10 صبح
چرا از in استفاده نمیکنید؟



select * from table where fildname in(items)


که میتونید items رو مثلا انجوری بدین (N'علی'،N'حسن'،N'حسین')

این که شما فرمودید هم یک فیلد رو جستجو میکنه .من میخوام رویه چند تا فیلد جستجو انجام بشه .
مثلا طرف یکم از کد کالا رو بزنه بعد "+" یکم از نام کالا "+" یکم هم از مشخصه فنی تا بتونه کالا رو جستجو کنه.
کد بالایه من رویه یک فیلد کاملا جواب میده .ولی من به فیلدهای بیشتری واسه جستجو نیاز دارم .

رامین مرادی
دوشنبه 21 اسفند 1396, 11:47 صبح
خب از orیا and برحسب نیازتون هم باید استفاده کنید و فیلدهای بیشتری رو معرفی کنید



select A,B from tblTest
where A in (12,17) or B in (12,17)

jafarpalideh
دوشنبه 21 اسفند 1396, 11:50 صبح
آخه من کاراکتر به کاراکتر جست و جو میکنم .مورد شما جواب کار من رو نمیده

danialafshari
دوشنبه 21 اسفند 1396, 12:15 عصر
با سلام
شما در نوشتن کوئری مشکل دارید لطفاً در بخش مناسب مطرح کنید
باید از OR استفاده کنید

SELECT
ID,
FirstName,
LastName,
[Address]
FROM
dbo.TestTable
WHERE FirstName = '' OR LastName = 'afshari' OR [Address] = ''

میتونید بجای = از LIKE هم استفاده کنید
همه رو برابر یک TextBox قرار بدید تا با همون یک Text توی همه ی فیلدهای رشته ای جستجو انجام بشه
موفق باشید

رامین مرادی
دوشنبه 21 اسفند 1396, 12:33 عصر
آخه من کاراکتر به کاراکتر جست و جو میکنم .مورد شما جواب کار من رو نمیده

ما کلا داریم از روی علم غیب بهتون یاد میدیم. شما جدولتون رو بزارید یه خروجی مد نظر رو هم بزارید بعد برنامتون رو هم بزارید بدونیم چیکار میخواید بکنید.

jafarpalideh
دوشنبه 21 اسفند 1396, 13:14 عصر
با سلام
شما در نوشتن کوئری مشکل دارید لطفاً در بخش مناسب مطرح کنید
باید از OR استفاده کنید

SELECT
ID,
FirstName,
LastName,
[Address]
FROM
dbo.TestTable
WHERE FirstName = '' OR LastName = 'afshari' OR [Address] = ''

میتونید بجای = از LIKE هم استفاده کنید
همه رو برابر یک TextBox قرار بدید تا با همون یک Text توی همه ی فیلدهای رشته ای جستجو انجام بشه
موفق باشید


ممنون بابت پاسختون . شما یه زحمت بکشید و به بنده بگید که کد پست اول رو چطور تغییر بدم که کاراکتر به کاراکتر تویه دو تا فیلد بگرده و نتیجه رو به من نشون بده .

jafarpalideh
دوشنبه 21 اسفند 1396, 13:17 عصر
ما کلا داریم از روی علم غیب بهتون یاد میدیم. شما جدولتون رو بزارید یه خروجی مد نظر رو هم بزارید بعد برنامتون رو هم بزارید بدونیم چیکار میخواید بکنید.
دوست خوبم بنده کد رو گذاشتم . و گفتم که رویه یک فیلد کامل جستجو رو انجام میده
یعنی من مینویسم دس + کا + 22 واسم دستمال کاغذی 220 برگ رو میاره و هر موردی که مشابه باشه .(جستجو بر اساس نام کالا)
ولی من میخوام تویه دوتا فیلد جدول جست و جو انجام بشه : هم کد کالا و هم نام کالا

danialafshari
دوشنبه 21 اسفند 1396, 14:13 عصر
دوست خوبم بنده کد رو گذاشتم . و گفتم که رویه یک فیلد کامل جستجو رو انجام میده
یعنی من مینویسم دس + کا + 22 واسم دستمال کاغذی 220 برگ رو میاره و هر موردی که مشابه باشه .(جستجو بر اساس نام کالا)
ولی من میخوام تویه دوتا فیلد جدول جست و جو انجام بشه : هم کد کالا و هم نام کالا

با توضیح من مشکلتون حل نشد؟

147790

شما هر چی توی اون جستجو بنویسید درون همه فیلد ها جستجوش میکنه
چه نام چه نام خانوادگی چه شماره همراه و...
توی پست قبل توضیح داده شد

jafarpalideh
دوشنبه 21 اسفند 1396, 14:18 عصر
با توضیح من مشکلتون حل نشد؟

147790

شما هر چی توی اون جستجو بنویسید درون همه فیلد ها جستجوش میکنه
چه نام چه نام خانوادگی چه شماره همراه و...
توی پست قبل توضیح داده شد

من میخوام با هر بار زدن اسپیس یا کاراکتر بعلاوه یه قسمت جدید رو سرچ کنم .
اونی که شما فرمودید مشکل بنده رو حل نمیکنه متاسفانه

jafarpalideh
دوشنبه 21 اسفند 1396, 14:22 عصر
دقیقا مثل این برنامه میخوام


147791

Mahmoud.Afrad
سه شنبه 22 اسفند 1396, 03:15 صبح
هر چند تا فیلد را با or اضافه کنید
string[] a = textBox1.Text.Split('+', ' ');
string b = "select * from table where ";
for (int i = 0; i < a.Length; i++)
{
b += " (field1 like '%" + a[i] + "%' OR field2 like '%" + a[i] + "%')";
b += " AND ";
}

b += " true ;";

MessageBox.Show(b);
بهتره از پارامترها استفاده کنید.

jafarpalideh
چهارشنبه 23 اسفند 1396, 15:11 عصر
هر چند تا فیلد را با or اضافه کنید
string[] a = textBox1.Text.Split('+', ' ');
string b = "select * from table where ";
for (int i = 0; i < a.Length; i++)
{
b += " (field1 like '%" + a[i] + "%' OR field2 like '%" + a[i] + "%')";
b += " AND ";
}

b += " true ;";

MessageBox.Show(b);
بهتره از پارامترها استفاده کنید.

آقای Afrad عزیز متاسفانه کد کار نمیکنه . شما خودتون تست کردید کد رو ؟

jafarpalideh
چهارشنبه 23 اسفند 1396, 15:14 عصر
هر چند تا فیلد را با or اضافه کنید
string[] a = textBox1.Text.Split('+', ' ');
string b = "select * from table where ";
for (int i = 0; i < a.Length; i++)
{
b += " (field1 like '%" + a[i] + "%' OR field2 like '%" + a[i] + "%')";
b += " AND ";
}

b += " true ;";

MessageBox.Show(b);
بهتره از پارامترها استفاده کنید.


من همه جوره کدهارو جابه جا کردم ولی جواب نگرفتم.
یکبار به AND گیر میده . یکبار به TRUE گیر میده و یکبار به ";" گیر میده.

Mahmoud.Afrad
پنج شنبه 24 اسفند 1396, 12:35 عصر
به جای true یک عبارت مثل 1=1 قرار بدید.

khoshblagh
شنبه 26 اسفند 1396, 19:48 عصر
هر چند تا فیلد را با or اضافه کنید
string[] a = textBox1.Text.Split('+', ' ');
string b = "select * from table where ";
for (int i = 0; i < a.Length; i++)
{
b += " (field1 like '%" + a[i] + "%' OR field2 like '%" + a[i] + "%')";
b += " AND ";
}

b += " true ;";

MessageBox.Show(b);
بهتره از پارامترها استفاده کنید.
با سلام
من این مدل کدی نویسی را تجربه نکرده ام. آیا کد بالا را باید سمت اس کیو ال نوشت و یا سمت برنامه ؟ اگر در برنامه نوشته شود فرضا برای دلفی به چه صورت باید نوشته شود؟ متشکرم