שילוב של האופרטורים In ו-Like

יום שלישי, ספטמבר 27, 2016

נניח שרוצים למצוא בטבלה את כל השורות בהן עמודה מסויימת שווה ל-.. או ל.. או ל.. וכו’ (רשימה ארוכה של ערכים אפשריים). במקום לכתוב משהו כמו- Select *From MyTblWhere MyCol='..' Or MyCol='..' Or MyCol='..' .. נכתוב משהו אלגנטי וקריא יותר בסגנון של- Select *From MyTblWhere MyCol In ('..', '..', '..', .. ..); מה נעשה אם נרצה לכתוב משהו כמו- Select *From MyTblWhere MyCol Like '%..%' Or Like MyCol='%..%' Or MyCol Like '%..%' .. הרי לא נוכל לשלב In ו-Like ביחד.מה עושים?פתרון פשוט אין,...
אין תגובות

היכן הפסיק ה-n-י? (מציאת מופע של תת מחרוזת): גרסת ה-String_Split

יום חמישי, אפריל 7, 2016

לפני למעלה מ-6 שנים, בראשית דרכי כבלוגר, פרסמתי את הפוסט היכן הפסיק ה-n-י? (מציאת מופע של תת מחרוזת):נתונה טבלה ובה עמודת Subjects עם מקצועות שונים שכל סטודנט לומד - Create Table T_Students (Name VarChar(50), Subjects VarChar(Max));GoInsert Into T_StudentsValues ('Ana','Geography,Literature'), ('Beni','Chemistry,Economics,History,Sociology'), ('Carmel',''), ('Dana','Literature,Economics,Philosophy,Sociology'), ('Eli','Zoology,Economics,Geography,History,Science'), ('Felicia','Medicine');Go ויש לשלוף את המקצוע הרביעי (אם יש..) של כל סטודנט.הפתרון שאז מצאתי, בלוגר צעיר ונרגש שחרד...

פונקצייה חדשה: String_Split

יום שני, מרץ 28, 2016

פונקצייה חדשה שהתווספה לגרסה האחרונה של 2016, וכפי ששמה מעיד עליה – היא מבצעת Split והופכת מחרוזת לסט.בערך כך: Select *From String_Split('1,2,3,4,5,6,7,8,9,10',','); צריך להעביר שני פרמטרים: המחרוזת שצריך לפצספלט (שילוב של פיצול וספליט) והתו המפריד בין ערך לערך (תו אחד בלבד!).עד כה היינו צריכים להתלבט בין שימוש ב-CTE רקורסיבי או XML (מוסרבל ולא יעיל), דרך פונקציית משתמש (יותר יעיל אך מחייב יצירת אובייקט), וכלה בפונקציית CLR (הכי יעיל אבל צריך “ללכלך” את הידיים ולתחזק את הקוד). כעת יש כלי מובנה והחיים נראים יפים מתמיד! טוב. אז מה עושים עם זה: אמרנו כבר Split?...
אין תגובות