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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. רג'קס בMYSQL

רג'קס בMYSQL

מתוזמן נעוץ נעול הועבר תכנות
28 פוסטים 6 כותבים 358 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • שואףש מנותק
    שואףש מנותק
    שואף
    כתב ב נערך לאחרונה על ידי
    #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
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום