PDA

View Full Version : سوال: فرمول جستجوی ترکیبی



Hossis
دوشنبه 04 بهمن 1389, 21:51 عصر
کسی فرمولی برای جستجوی ترکیبی داره
به عنوان مثال می خواهیم در یک فیلد مثل Matn جستجو کنیم که ردیفهایی رو لیست کنه که هر دو کلمه علی و حسین توش باشند ولی کلمه حمید توش نباشه
یا یکی از دو کلمه حسن و حمید توش باشند
به عنوان مثال
select * from Table1 where Matn Like%علی% And matn Like%حسن% and Matn <>حمید

این کد درسته؟؟
اگر درسته ، چطور همجین متن ورودی رو تبدیل به آن بکنیم؟؟
"علی &حسین!حمید"

مرتضی تقدمی
سه شنبه 05 بهمن 1389, 15:29 عصر
سلام

من معنی خط قرمز رو نفهمیدم ولی در مورد مثالتون اینکه بله همچین کدی درسته, فقط سینتکس اون کمی اشکال داره.




select * from Table1 where Matn Like N'%"علی"%' AND matn Like N'%"حسن"%' AND matn <> "حمید" "



امتحانش کنید.

موفق باشید

Hossis
یک شنبه 10 بهمن 1389, 21:30 عصر
سلام

من معنی خط قرمز رو نفهمیدم ولی در مورد مثالتون اینکه بله همچین کدی درسته, فقط سینتکس اون کمی اشکال داره.

اون یک مثال هست یعنی اگر کاربر در کادر متن، این مثال رو وارد کرد، چطوری از طریق کدنویسی می شه به کد اسکیوال تبدیل کرد؟





select * from Table1 where Matn Like N'%"علی"%' AND matn Like N'%"حسن"%' AND matn <> "حمید" "



امتحانش کنید.

موفق باشید

من دو سؤال دارم
1-کاراکتر N برای چی هست؟
2- من امتحان کردم فکر کنم عبارت NOT Like از <> بهتر باشه

reza_edu
دوشنبه 11 بهمن 1389, 03:13 صبح
تا اونجا که من میدونم حرف n برای زمانی هست که میخوایم جستجو بر اساس کارکتر های یونیکد باشه ! دوستان بگن درست میگم یا نه

اون یک مثال هست یعنی اگر کاربر در کادر متن، این مثال رو وارد کرد، چطوری از طریق کدنویسی می شه به کد اسکیوال تبدیل کرد؟
خوب ببین درست فهمیدم یه همچین چیزی میخوای؟

"SELECT * FROM nametable WHERE firstname=' " & textbox1.text & " '
این بود منظور شما؟

Hossis
دوشنبه 11 بهمن 1389, 20:51 عصر
منظورم این بود که حل شد!

select * from tabel where Matn Like'%علی%' AND Matn Like'%حسین%' And Matn NOT Like'%حمید%'

Hossis
جمعه 22 بهمن 1389, 19:01 عصر
حالا فرض کنید کاربر چنین متنی رو برای جستجو فرستاده

علی+(حسن|حسین)!یاسر
برای این که این عبارت رو به فرمان اسکیوال تبدیل کنیم و در select جای بدیم باید چه کار کنی؟؟
معمای خیلی سختی هست !

Hossis
جمعه 22 بهمن 1389, 19:10 عصر
معمایی که در پست قبلی مطرح کرده بودم، به این نحو حل شد!


Dim sf As String = strfind
sf = sf.Replace("(", "(" & fild & " Like'%").Replace(")", ")")
sf = sf.Replace("+(", "%' And(").Replace("|(", "%' Or(").Replace("!(", "%' And Not(").Replace("^(", "%' XOR(")
sf = sf.Replace("+", "%' And " & fild & " Like'%") & "%'"
sf = sf.Replace("!", "%' And " & fild & " NOT Like'%") & "%'"
sf = sf.Replace("|", "%' Or " & fild & " Like'%") & "%'"
sf = sf.Replace("^", "%' XOr " & fild & " Like'%") & "%'"
sf = sf.Replace("٪", "%")
Do While sf.Contains("%'%'")
sf = sf.Replace("%'%'", "%'")
Loop
sf = sf.Replace(" ", " ").Replace("(%'", "%'(").Replace(")%'", "%')")
If strfind.First = "(" Then
sf = "Select id,[Caption] From " & tabel & " Where " & sf '& sf1
Else
sf = "Select id,[Caption] From " & tabel & " Where " & fild & " Like'%" & sf '& sf1

End If
' sf = "Select id,[Caption] From " & tabel & " Where " & fild & " Like'%" & sf '& sf1

If chSearchFolder.Checked Then
sf &= " And Folder In(" & FolderId & ")"
End If

می توانید نتیجه را در تصویر ضمیمه ببینید