Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Phone Numbers Format

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von rodrigo412, 2 März 2017.

  1. rodrigo412

    rodrigo412 Benutzer

    Hello i need to format lots of phone numbers in which the content would be like this

    Festnetz|0202|528 72743
    |040|987 44 10 oder 0170 465 45 33
    41|(0)44|777 82 56
    02273/54382|02273/5669344|Büro (these are two different numbers)
    49|6151|13099-25

    And I need it like this

    Country code and then the number (notice the blanks)
    +49 234 0987656

    I am already using this expression
    REGEXP_REPLACE(regexp_replace(REGEXP_REPLACE(concat(d.BUSINESS_PHONE),('[|]'),' '),('[-]'),' '),(' {2,}'),' ')

    Thanks in advance
    Rodrigo
     
  2. ukulele

    ukulele Datenbank-Guru

    Du solltest dir eine Funktion schreiben die erkennt was möglich ist. In der Funktion prüfst du, ob die Rufnummer mit einer Landesvorwahl beginnt und wenn ja, speicherst du sie getrennt ab. Dann Netzvorwahl usw.

    Am Ende baust du deinen Wunsch-String aus dem Ergebnis frisch zusammen. Es gibt keine Funktion die ein solches Chaos nachträglich korrigiert. Das muss man schon selber sauber machen.
     
  3. rodrigo412

    rodrigo412 Benutzer

    I got this:

    REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(regexp_replace(REGEXP_REPLACE(concat(d.BUSINESS_PHONE),('[/]'),' '),('[)]'),' '),('[(]'),' '),('[|]'),' '),('[-]'),' '),(' {2,}'),' ')

    and then I could join it with something like this

    case
    when business_phone <> '||' and b.country_business = 'de'
    then regexp_replace(rtrim(ltrim(regexp_replace(business_phone, '\D',' '))),'^0*+4+\d{1}+\s+0*','+49 ')
    when business_phone <> '||' and b.country_business = 'ch'
    then regexp_replace(rtrim(ltrim(regexp_replace(business_phone, '\D',' '))),'^0*+4+\d{1}+\s+0*','+41 ')
    when business_phone <> '||' and b.country_business = 'at'
    then regexp_replace(rtrim(ltrim(regexp_replace(business_phone, '\D',' '))),'^0*+4+\d{1}+\s+0*','+43 ')
    end as phone

    but I still got difficulties with the double phone numbers stored as one value
    Could you help me with this?
     
  4. ukulele

    ukulele Datenbank-Guru

    Von wievielen Datensätzen reden wir denn? Manchmal ist Manuel schneller...
     
  5. rodrigo412

    rodrigo412 Benutzer

    Über 250.000 wobei die doppelte Nummern in einen Eintrag sind es nur einzelfälle
     
  6. akretschmer

    akretschmer Datenbank-Guru

    obviously you are able to speak german ...

    wie willst Du aus dem gezeigten Murks denn die dann gezeigte Telefonnummer ermitteln? Die '987656' taucht, nach grober Sichtung, im ersten Teil nicht auf.

    Ansonsten bin ich da auf Seite von @ukulele

    Andreas
     
  7. ukulele

    ukulele Datenbank-Guru

    Am besten du überführst erstmal alles in saubere Spalten für Land, Netz und Rufnummer (vielleicht noch Durchwahl). Das kannst du mit einer selbst gebauten Funktion machen oder du machst es Schrittweise in dem du die häufigen Formate erkennst und übersetzt. Irgendwann wird der Rest immer kleiner, hoffentlich eine überschaubare Menge.
     
    Walter gefällt das.
  8. rodrigo412

    rodrigo412 Benutzer

    Hallo Andreas, ich moechte es mir so anzeigen lassen(Landvorwahl,Netz und Nummer)
    +43 123 24398572
    Die 987656 war nur ein beispiel
    Beste Gruesse
    Rodrigo
     
  9. rodrigo412

    rodrigo412 Benutzer

    Danke dir, es wird anscheinend viel arbeit sein.
    Beste Gruesse
    Rodrigo
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden