ארגון מחרוזות

יום ראשון, יולי 22, 2012

טיפול במחרוזות הוא אחת החולשות של TSQL ולפתרון בעיות "אמיתיות" יש לכתוב לא פעם פונקציות מיוחדות המתבססות על ספריית הפונקציות של ה-Clr, או לנסות להסתדר עם מה שיש בעזרת הרבה נחישות! בכל מקרה- נתקלתי לאחרונה בבעייה של מחרוזות בהן יש שתי מילים, ויש לסדר אותן כך שהעברית תהיה תמיד ראשונה (או לחילופין- שניה), או שהמספר יהיה ראשון (או לחילופין- שני) וכו'. משימה שמתלבשת ככפפה ליד על הפונקציה PatIndex (למי שתוהה- Pat זה Pattern) שמחפשת במחרוזות נתונות היכן מתחילה תת המחרוזת הראשונה העונה לתנאי מסויים, והיא תשמש אותנו למצוא היכן מתחילה העברית או הלועזית או המספר.. ...
אין תגובות

תחליפים ל-IsNumeric

יום שישי, מאי 4, 2012

פונקציית IsNumeric מחזירה 0 למחרוזות שלא ניתן להפוך למספר ו-1 למחרוזות שכן, וכך היא מאפשרת למשל למצוא חריגים בנתונים שנקלטים מקבצי טקסט. הבעייה בפונקציה שיש לה הגיון פנימי משלה שנקבע על ידי מי שתכנת אותה, וזה לא תמיד ההגיון שלנו. למשל (ותודה ל-PITOACH ול-rnan מפורום בסיסי נתונים בתפוז)- Select IsNumeric('$') , IsNumeric('1D8') , ...
3 תגובות

היפוך חכם של טקסט עברי-לועזי

יום שני, יוני 20, 2011

בעייה מוכרת למי שעובד עם קבצי טקסט המשלבים עברית ולועזית היא שלעיתים העברית מתהפכת בשל הגדרות שונות של מערכות שונות, ואז יש להפוך את הטקסט בצורה חכמה, כלומר- את תתי המחרוזות העבריים יש להפוך ואת תתי המחרוזות הלועזיים יש להשאיר כמו שהם. למשל- התקבל הטקסט " 012345ףשר ירג" הכולל את שמי בצורה משובשת ואת מספר חשבון הבנק שלי 012345 בצורה תקינה. כעת יש להפוך את המחרוזת בצורה חכמה כך ש-ףשר ירג יחזור להיות גרי רשף, אבל 012345 ישאר ללא שינוי. מכיוון שתקלה זו אופיינית לאתרי אינטרנט, בעיקר בימים בהם הסתבכנו עם...
אין תגובות

המרה בין ערכים דצימליים והקסדצימלים ומיון ערכים מספריים

יום ראשון, פברואר 6, 2011

מעולם לא הזדקקתי לבסיס הספירה ההקסדצימלי בסופרמרקט או בחדר הכושר, אבל יוצא לי להיתקל בו פה ושם בטבלאות מערכת, ומכיוון שאין לדעת אל נכון מתי אזדקק לשירותיו- אני כבר מקדים רפואה למכה.. להלן דוגמה מדורגת כיצד מתרגמים 500 לערך הקס דצימלי: With T As (Select 500 , Cast(500 As Varbinary(Max)) , master.dbo.FN_VarbinToHexStr(Cast(500 As Varbinary(Max))) , ...

חיפוש מילים שלמות בתוך מחרוזת

יום רביעי, יוני 16, 2010

לכאורה לא מסובך במיוחד- ניצור טבלה עם נתונים ונחפש באילו שורות מופיע גד: Use tempdb; Go   If Object_Id('T_Hipus') Is Not Null Drop Table T_Hipus Go Create Table T_Hipus(Mone Int, Mishpat Varchar(Max)); Go   Insert Into T_Hipus Select 1,'פגשתי את גד ברחוב' Union All Select 2,'פגשתי את גדי ברחוב' ...
אין תגובות