Tuesday, March 08, 2011

חיפוש עם תווים בעייתיים (2)

לפני קרוב לשנה כתבתי על שימוש באופרטור Like תוך שימוש בתווים בעייתיים. 
הצעתי פתרון כללי העושה שימוש ב-Replace, 
ופתרון ספציפי לתו הג'וקר %. 
גם הסוגריים המרובעים יוצרים בעיות מכיוון שמשתמשים בהם לתחימת התווים הבעייתיים עצמם.. 
מה עושים? 
הפתרון הוא להקיף את הסוגר המרובע הפותח בסוגריים מרובעים []]. את הסוגר המסיים יש להשאיר כמו שהוא.
למשל (ניצור טבלה זמנית ונכניס לתוכה מחרוזת אחת לנסיון)-

Create Table #T(Txt Varchar(Max));
Go
Insert
Into    #T
Select    'ab[cd]ef';
Go
כעת ננסה לשלוף את "כל" השורות בהן מופיעה המחרוזת b[cd]e (כלומר- הרשורה היחידה בטבלה), ולשם כך נשים מסביב לסוגר הראשון השמאלי סוגריים מרובעים:

Select    *
From    #T
Where    Txt Like '%b[[]cd]e%';
Go

Read more: גרי רשף