• דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

רג'קס בMYSQL

מתוזמן נעוץ נעול הועבר תכנות
28 פוסטים 6 כותבים 125 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #1

    ממה שחיפשתי אין פיתרון מובנה לבעייה הזו, אשמח לעזרה באילתור פיתרון.
    יש לי שני טבלאות, אחת בה נרשמות השיחות נכנסות (מספר מחייג ומחוייג ותאריך), ואחת עם נתונים של כל מספר טלפון (מספר, כתובת מייל, וכמה הגדרות אישיות)
    אני רוצה לעשות SELECT עם LEFT JOIN שמצרף על כל שורה של שיחה נכנסת, את השם של המתקשר.
    הבעייה שהמבנה של המספר שונה. בטבלא של המידע, כל מספר כתוב בצורה נכונה: 052769XXXX
    אבל בטבלא של השיחות, יש כמה אפשרויות

    052769XXXX
    0052769XXXX
    52769XXXX
    0097252769XXXX
    97252769XXXX
    +97252769XXXX
    

    מה שצריך לעשות, זה למחוק כל הפלוסים וה0 וה972 (לפי הסדר הזה) מתחילת המספר, ואז להצמיד לו 0 בהתחלה
    כבונוס, צריך גם להתייחס למספרי חול, שהם לא מתחילים ב0, ולכן צריך לעשות להם הטיפול הנל, רק בלי להצמיד 0, וזה כאשר המספר הוא יותר גדול מ9 ספרות

    אני רואה שיש פונקציה בMYSQL 8 שנקראת REGEXP_SUBSTR. אבל מסובך לשדרג עכשיו אחרי שהכל כבר בנוי ואני חושש שיעשה בלאגן (או שאולי זה חשש שווא?)

    אם למישהו יש רעיון לפיתרון פשוט, אודה לו מאוד

    WWWW תגובה 1 תגובה אחרונה
    1
  • WWWW מנותק
    WWWW מנותק
    WWW
    השיב לשואף ב נערך לאחרונה על ידי WWW
    #2

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

    או שבאמת אתה רוצה לעשות את השאילתא הזאת רק פעם אחת?

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    שואףש תגובה 1 תגובה אחרונה
    5
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #3

    תצרף בשאילתא לפי 8 הספרות הימניות.

    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #4
    פוסט זה נמחק!
    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #5

    @chagold זה רעיון יפה, אבל מכיוון שיש מספרים ניידים ומספרים נייחים, זה עושה לי בלאגן יותר גדול.
    אם אקח את ה8 מספרים, זה מפספס את ה5 של הניידים.

    תגובה 1 תגובה אחרונה
    2
  • שואףש מנותק
    שואףש מנותק
    שואף
    השיב לWWW ב נערך לאחרונה על ידי
    #6

    @WWW אמר ברג'קס בMYSQL:

    למה שלא תעדכן את הנתונים בצורה תקנית פ"א בטבלה.

    צודק לחלוטין
    למעשה זה קצת מה שאני רוצה לעשות.
    לא יודע איך אתם מנהלים את הCDR, אבל הגעתי למסקנה כזו
    יש X שרתי אסטריסק, כל אחד מנהל CDR עצמאי בLOCALHOST
    וכל חצי שעה, יש משימה מתוזמנת שלוקחת את כל הרישומים החדשים ומכניס אותם למסד נתונים המרכזי שעל השרת קבצים.
    ככה אני חוסך שלא צריך לגשת בכל שיחה לשרת המרכזי, ומצד שני הכל נמצא עליו.

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

    WWWW תגובה 1 תגובה אחרונה
    1
  • WWWW מנותק
    WWWW מנותק
    WWW
    השיב לשואף ב נערך לאחרונה על ידי
    #7

    @שואף אמר ברג'קס בMYSQL:

    וכל חצי שעה, יש משימה מתוזמנת שלוקחת את כל הרישומים החדשים ומכניס אותם למסד נתונים המרכזי שעל השרת קבצים.

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

    איך אתה מפעיל את השאילתה, עם איזה משימה? אני חושב שתעשה את זה עם PHP וכדו', וחסל.

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    dovidD תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לWWW ב נערך לאחרונה על ידי
    #8

    גם אני לא הבנתי איך אתה עושה את העדכון.
    אם זה בSQL תשתמש בREGEXP_REPLACE להגיע לתוצאה הרצויה,
    תסביר איפה אתה נתקע.

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #9

    @WWW אמר ברג'קס בMYSQL:

    אני חושב שתעשה את זה עם PHP

    כן זה מה שאני חושב עכשיו, כנראה שהכי נכון לעשות את זה ככה וזהו

    @dovid אמר ברג'קס בMYSQL:

    אם זה בSQL תשתמש בREGEXP_REPLACE להגיע לתוצאה הרצויה,

    רק מMYSQL 8

    תגובה 1 תגובה אחרונה
    1
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי שואף
    #10

    עשיתי את זה בPHP וזה הפיתרון הכי טוב ב"ה
    רציתי רק שהמומחים ( @dovid ) יעברו על הרג'קס שלי..
    https://regex101.com/r/PlWjrT/2

    רק לא הצלחתי לעשות אחרי זה שיוסיף 0 בתחילת כל מספר. אני עושה $1 וזה מציג את התוצאה, אבל 0$1 כבר משבש את הכל.

    תגובה 1 תגובה אחרונה
    1
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #11

    למי שהתעניין.. זהו הפיתרון, להריץ לולאה (כמובן עם &) על כל המערך, ולקרוא לפונקציה הזו על כל שדה של מספר

    function formatIsraeliNumber($number)
    {
    	$return = preg_replace('#\+?|0*|(972)?(\d+)#', '$2', $number);
    	return (strlen($return) < 10 ? '0': '').$return;
    }
    
    תגובה 1 תגובה אחרונה
    3
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #12

    https://regex101.com/r/Eql3kN/1

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #13

    39d33ce0-171a-4605-a3ff-44b6eb8026ac-image.png

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לשואף ב נערך לאחרונה על ידי dovid
    #14

    @שואף F5
    עריכה: יותר טוב בעצם ככה
    https://regex101.com/r/Eql3kN/2

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #15

    בPHP אפשר לעשות קבוצות עם שם ולא סתם מספרים:
    https://regex101.com/r/Eql3kN/3
    ואגב ראית שיש להם שמה יוצר קוד לPHP:
    https://regex101.com/r/Eql3kN/1/codegen?language=php

    אפשר ליצור קשר dovid@tchumim.com

    שואףש תגובה 1 תגובה אחרונה
    1
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #16

    @dovid תודה
    אבל עדיף הראשון, לא הבנתי למה (בשעה הזו אל תצפה ממני יותר מידי..), אבל על המספר הזה +1564527691234 הראשון מוחק את + והשני לא
    בסוף ראיתי שה0 צריך רק אם המספר הוא פחות מ10 תווים, לכן אני כבר משתמש בPHP בשביל זה (או שתשלוף מהכובע רג'קס שיוסיף רק אם זה פחות מ10 תווים)

    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    השיב לdovid ב נערך לאחרונה על ידי
    #17

    @dovid אמר ברג'קס בMYSQL:

    בPHP אפשר לעשות קבוצות עם שם ולא סתם מספרים:
    https://regex101.com/r/Eql3kN/3
    ואגב ראית שיש להם שמה יוצר קוד לPHP:
    https://regex101.com/r/Eql3kN/1/codegen?language=php

    מקסים, לא הכרתי. תודה רבה

    תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #18

    לא הבנתי מה הפלט הרצוי של זה: +1564527691234
    וגם לא הבנתי איפה האבחנה בין 10, יש מצב לדוגמה שניה?

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    0
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #19

    במספר כזה (חו"ל) הייתי רוצה לקבל אותו כמו שהוא רק בלי ה+ בהתחלה
    פשוט שמספרים ישראלים צריכים להגיע בתבנית ישראלית, 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 ספרות

    תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #20

    @שואף מה מונע ממך משדרוג הmysql?

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    0

  • 1
  • 2
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.