רג'קס בMYSQL
-
@WWW אמר ברג'קס בMYSQL:
למה שלא תעדכן את הנתונים בצורה תקנית פ"א בטבלה.
צודק לחלוטין
למעשה זה קצת מה שאני רוצה לעשות.
לא יודע איך אתם מנהלים את הCDR, אבל הגעתי למסקנה כזו
יש X שרתי אסטריסק, כל אחד מנהל CDR עצמאי בLOCALHOST
וכל חצי שעה, יש משימה מתוזמנת שלוקחת את כל הרישומים החדשים ומכניס אותם למסד נתונים המרכזי שעל השרת קבצים.
ככה אני חוסך שלא צריך לגשת בכל שיחה לשרת המרכזי, ומצד שני הכל נמצא עליו.אז הייתי רוצה לא לגעת בCDR הלוקלי, אבל במרכזי להכניס את הנתונים בצורה מתוקנת. ובשביל זה, בשאילתא המתוזמנת כל חצי שעה, אני צריך לתקן את השדה של המספר מחייג כנל. ובשביל זה אני צריך את הפיתרון לבעייה.
-
@שואף אמר ברג'קס בMYSQL:
וכל חצי שעה, יש משימה מתוזמנת שלוקחת את כל הרישומים החדשים ומכניס אותם למסד נתונים המרכזי שעל השרת קבצים.
ובשביל זה, בשאילתא המתוזמנת כל חצי שעה, אני צריך לתקן את השדה של המספר מחייג כנל. ובשביל זה אני צריך את הפיתרון לבעייה.
איך אתה מפעיל את השאילתה, עם איזה משימה? אני חושב שתעשה את זה עם PHP וכדו', וחסל.
-
@WWW אמר ברג'קס בMYSQL:
אני חושב שתעשה את זה עם PHP
כן זה מה שאני חושב עכשיו, כנראה שהכי נכון לעשות את זה ככה וזהו
@dovid אמר ברג'קס בMYSQL:
אם זה בSQL תשתמש בREGEXP_REPLACE להגיע לתוצאה הרצויה,
רק מMYSQL 8
-
למי שהתעניין.. זהו הפיתרון, להריץ לולאה (כמובן עם &) על כל המערך, ולקרוא לפונקציה הזו על כל שדה של מספר
function formatIsraeliNumber($number) { $return = preg_replace('#\+?|0*|(972)?(\d+)#', '$2', $number); return (strlen($return) < 10 ? '0': '').$return; }
-
בPHP אפשר לעשות קבוצות עם שם ולא סתם מספרים:
https://regex101.com/r/Eql3kN/3
ואגב ראית שיש להם שמה יוצר קוד לPHP:
https://regex101.com/r/Eql3kN/1/codegen?language=php -
@dovid תודה
אבל עדיף הראשון, לא הבנתי למה (בשעה הזו אל תצפה ממני יותר מידי..), אבל על המספר הזה +1564527691234 הראשון מוחק את + והשני לא
בסוף ראיתי שה0 צריך רק אם המספר הוא פחות מ10 תווים, לכן אני כבר משתמש בPHP בשביל זה (או שתשלוף מהכובע רג'קס שיוסיף רק אם זה פחות מ10 תווים) -
@dovid אמר ברג'קס בMYSQL:
בPHP אפשר לעשות קבוצות עם שם ולא סתם מספרים:
https://regex101.com/r/Eql3kN/3
ואגב ראית שיש להם שמה יוצר קוד לPHP:
https://regex101.com/r/Eql3kN/1/codegen?language=phpמקסים, לא הכרתי. תודה רבה
-
במספר כזה (חו"ל) הייתי רוצה לקבל אותו כמו שהוא רק בלי ה+ בהתחלה
פשוט שמספרים ישראלים צריכים להגיע בתבנית ישראלית, 9 או 10 ספרות.
ממילא אם אחרי הרג'קס שהוריד להם את ה0 בהתחלה, נשאר 8 או 9 ספרות, זה מספר ישראלי וצריך להוסיף לו 0 בהתחלה
אם לא, אז להחזיר אותו כמו שהואאגב, אל תצחק יותר מידי אבל דווקא כתבתי משהו חמוד בMYSQL
SELECT src, CASE WHEN LENGTH(src) < 11 THEN (CASE WHEN SUBSTR(src, -9, 1) IN(5,7) THEN CONCAT('0', SUBSTR(src, -9)) ELSE CONCAT('0', SUBSTR(src, -8)) END) ELSE src END AS src2
רק זה לא היה נכון כי אני מודד אורך המספר לפני הטיפול, ואז הוא יכול להיות ישראלי ויותר מ10 ספרות
-
@שואף אמר ברג'קס בMYSQL:
מפחד שימחוק לי המסדי נתונים. ואין לי זמן לעשות גיבוי ולשחזר הכל אחר כך
הפחד שתצטרך לשחזר הוא משונה.
לגבות לא לוקח זמן, זו פקודה של שורה אחת.
אני מקוה שלא אמצא אותך עוד עשר שנים באותו מקום בגלל בעיית זמן השחזור שלא אמור להיות בע"ה.