Andi: Abfrage anders gestalten

Hallo Forumer!

Hier meine Problem:

Habe eine Tabelle mit alles Telefonnummern, wenn jetzt jemand anruft soll in dieser Tabelle gesucht werden, ob dieser Kunde schon einmal angerufen hat.

Ich bekomme die Telefonnummer immer im selben Format
z.B. 0558669945

Nun wird der Kunde mit einer Software erfasst. Hier gibt es keine Beschränkung, wie man die Telefonnummer eingibt.

Also es kann alles vorkommen:

0558/669945
0558 669945
0558-669945

Um jetzt alle Telefonnummern auf das gleiche Format zu bringen verwende ich folgendes

REPLACE(REPLACE(REPLACE(TelNr,'/',''),' ',''),'-','') = '0558669945'

Gibt es hierfür auch eine andere Lösung, weil Replace ist soooo langsam. Die Kundentabelle wird Riesengroß, sprich 10 mio. Datensätze.

Grüsse
Andi

  1. hi,

    Um jetzt alle Telefonnummern auf das gleiche Format zu bringen verwende ich folgendes

    REPLACE(REPLACE(REPLACE(TelNr,'/',''),' ',''),'-','') = '0558669945'

    beim auslesen?

    Gibt es hierfür auch eine andere Lösung, weil Replace ist soooo langsam.

    formatiere nicht beim auslesen um, sondern _speichere_ die telefonnummern gleich in diesem format.

    gruss,
    wahsaga

    1. Hi!

      Leider ist das vom Kunden aus nicht möglich, da der sie in diesem Format haben möchte, wie er die TelefonNr eingegeben hat.

      Andere Möglichkeit gibts nicht oder?

      Grüsse!

      Andi

      1. Hallo,

        Leider ist das vom Kunden aus nicht möglich, da der sie in diesem Format haben möchte, wie er die TelefonNr eingegeben hat.

        wie wärs denn beim speichern der TelNr. in die DB diese in formatierter Form in einer weiteren Spalte zu speichern?

        Gruß Frank

        1. Hi!

          Genau, das würde funktionieren.

          Danke.

          Manchmal sieht man de Wald....

          Grüsse
          Andi

          1. Hi Andi,
            wenn die Nummern immer nach der Masche Vorwahl (5 Nummern) und eigentliche Nummer (6 Nummern) laufen, kannste das mit
            left(nummer,5)
            und right(nummer,6) machen.
            Vielleicht ist auch noch ein Ansatz mit IsNumeric möglich...

            MfG
            Florian

            1. Hallo Florian,

              wenn die Nummern immer nach der Masche Vorwahl (5 Nummern) und eigentliche Nummer (6 Nummern) laufen, kannste das mit

              Nicht jede Vorwahl hat vier Ziffern, nicht jede Telefonnummer hat sechs Ziffern, weiterhin gibt es die Möglichkeit, die Telefonnummer international darzustellen, ein-, zwei, drei- oder gar vierstellige Durchwahlen, die mit Bindestrich abgetrennt sind ...

              Die Möglichkeiten sind vielfältig :-)

              left(nummer,5)
              und right(nummer,6) machen.

              Deswegen geht es leider nicht so einfach.

              Freundliche Grüsse,

              Vinzenz

              1. War ja nur ein Vorschlag um den replace Wust zu umgehen. Aber wenn man wirklich alle möglichen Eingabeformate berücksichtigen will, fällt mir momentan nichts anderes ein außer vielleicht noch jedes Zeichen im String mit IsNumeric auf Zahlenkonformität zu prüfen und damit dann die Lücken zwischen Vorwahl und Nummer zu finden, und dann die Position an left, mid oder right zu übergeben. Allerdings bezweifle ich, dass sich da der Aufwand lohnt. Wenn aber auch weitere Eingabeformate (xxx - xxx, xxx / xxx, xxx xxx sind ja nur 3 Möglichkeiten) berücksichtigt werden sollen, sähe ich damit schon eine Möglichkeit. Allerdings bekommt diese Methode dann Probleme wenn Nummern im Format x xx xx / xx xx xx oder anders gesperrt vorkommen.

                Wäre ein Versuch wert.

                MfG
                Florian