udf בsql server

כלליים

New member
udf בsql server

שלום וברכה. התחלתי לעבוד עם sql server [הגיע הזמן. לא?
] אני צריך לחלץ מתוך מחרוזת הכוללת מספר וטקסט, את החלק הנומרי בלבד. למשל מ'טוקמן 60 דקות' להחזיר את המספר 60. כתבתי udf לצורך הענין. שאלתי: האם יש כלי מובנה לשם כך? מצורף הudf. תודה רבה
 

גרי רשף

New member
כלי מובנה- אין, אבל אפשר לבנות

פתרון בעזרת פקודות טקסט שכדאי להכיר:
Declare @S Varchar(Max); Set @S='טוקמן 60 דקות'; Select PatIndex('%[0123456789]%',@S) [Number Begins], PatIndex('%[0123456789]%',Reverse(@S)) [Reverse Number Begins], SubString(@S,PatIndex('%[0123456789]%',@S),Len(@S)+2-PatIndex('%[0123456789]%',@S)-PatIndex('%[0123456789]%',Reverse(@S))) [Number];​
הביטוי הראשון ב-Select מוצא היכן המספר מתחיל, הביטוי השני מוצא היכן המספר מתחיל מהסוף (מופעל על ההיפוך של המחרוזת), והביטוי השלישי מוציא את תת המחרוזת (SubString) ומשתמש בשני הנ"ל לקבוע החל מאיזה מקום וכמה תווים. בפועל יש להשתמש רק בביטוי השלישי, ובמקום המשתנה S@ לכתוב את שם העמודה מהטבלה.
 

כלליים

New member
תודה.

אכן, נעים להכיר.. [את הפונקציות]
בתמונה המצורפת שינית את הקוד של גרי, כדי שיתמודד גם עם מקרה שיש שני מקטעי ספרות בתוך המחרוזת. למשל 'טוקמן 60 דקות + 10 בונוס'. בקישור שצירף pitoach, לא הספקתי לעיין, אלא רק להציץ ולראות שגם הוא משתמש בלולאות. ואם-כן, הudf שצרפתי מתחילה, אף הוא עשה מלאכתו נאמנה. תודה רבה לכולכם
 

pitoach

New member
ןאפשר להפעיל ביטוי רגולרי ב CLR או בסקריפטVBS

בעזרת sp_OACreate
 
למעלה