חיפוש מתקדם

e y a l b

New member
חיפוש מתקדם

שלום חברה, אני מנסה לבנות מנוע חיפוש לאתר מסויים יש לי בעיה בשאילתה
insert into @tempTable select column1 , case column1 WHEN like '%' + @word1 + '%' THEN '1' WHEN like '%' + @word1 + '%' THEN '1' END as FoundIn from table select * from @tempTable where FoundIn = '1'​
זה עובד, אבל הבעיה מתחילה כאשר אני שולח לSP מחרוזת שבנוייה משתי מילים ואני צריך למצוא גם את המילה הראשונה וגם את השנייה ולא בהכרח הם צמודות. מקווה שהצלחתי להסביר כמו שצריך
 

תרשלו

New member
תנסה

select * from tbl_Name where ( column_1 like '%' + @word_1 + '%' + @word_2 + '%' ) or ( column_1 like '%' + @word_2 + '%' + @word_1 + '%' )​
 

תרשלו

New member
ואם אין חובה שיהיה את שתי המילים אז פשוט:

select * from tbl_Name where ( column_1 like '%' + @word_1 + '%' ) or ( column_1 like '%' + @word_2 + '%' )​
 

aPrt

New member
לא הבנתי באיזה DB זה אבל נראה לי SQLSERVER

בכל אופן, שלב ראשון אתה צריך לצמצם רווחים, כלומר שבין מילה למילה יהיה רק רווח אחד. שלב שני תעשה split על רווח וכך תקבל מערך מחרוזות שיכיל בכל תא מילה אחת. שלב שלישי תגדיר מחרוזת חדשה ותאתחל אותה במחרוזת רייקה(לא NULL אלא ""). שלב רביעי תרוץ על המערך ועבור כל תא תבנה את ה Like לתוך המחרוזת החדשה. שלב חמישי אם המחרוזת החדשה לא רייקה אז תחתוך לה מהסוף 3 תווים שזה ה Or ורווח של האיטרציה האחרונה.
 
למעלה