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

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

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

רג'קס בMYSQL

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

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

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

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

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

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

    WWWW תגובה 1 תגובה אחרונה
    1
    • שואףש שואף

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

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

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

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

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

      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
            • WWWW WWW

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

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

              שואףש מנותק
              שואףש מנותק
              שואף
              כתב ב נערך לאחרונה על ידי
              #6

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

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

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

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

              WWWW תגובה 1 תגובה אחרונה
              1
              • שואףש שואף

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

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

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

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

                WWWW מנותק
                WWWW מנותק
                WWW
                כתב ב נערך לאחרונה על ידי
                #7

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

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

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

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

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

                dovidD תגובה 1 תגובה אחרונה
                1
                • WWWW WWW

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

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

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

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

                  dovidD מנותק
                  dovidD מנותק
                  dovid
                  ניהול
                  כתב ב נערך לאחרונה על ידי
                  #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
                            • שואףש שואף

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

                              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
                                  • dovidD dovid

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

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