View Full Version : Telefonnr Suche
Moin Moin,
ich soll eine Telefonnr in einer DB suchen.
gespeichert ist diese Nr. mal mit *blank
01234 56 78 12
mal mit /
01234/4578 12
mal mit -
und so weiter, und so weiter..
(alles was man in ein alpha Feld reinkrigt, ist da auch drinn !!
kann ich mit einer view/ LF / Funktion ... das Feld
sehr performant vom 'Müll' befreien um via gegebener Telefonnr schnell die Adresse zu finden ?
dachte erst, jede gegebene Ziffer mit '%' zu trennen, abwer das ist weder schnell noch 100 % richtig
Danke
Robi
Hallo Robi,
und die +49 am Anfang, die bestimmt auch jemand eingegeben hat auch nicht vergessen.
Leider habe ich keinen gescheiten Tip außer evtl. ein zweites von Müll bereinigtes Feld in die Datei aufzunehmen. Dies wäre immerhin performant zum Suchen.
Gruß, Christian
... da geht per View und per function nix am full table scan vorbei, dessen Dauer sich halt in erster Nähe proportional zur Datenmenge und umgekehrt proportional zum Preis der AS400 verhält.
Das einzige, was dem nachhaltig auf die Sprünge verhilft ist eine ordentliche Datenbasis in numerischen Feldern mit entsprechenden Prüfungen, mit Huddelfeldern kommt man da nicht weiter. Dahin kann man auch ohne Änderung der Applikation kommen, indem man einfach drei ordentliche Felder (Ländervorwahl, nationale Vorwahl, Telefonnummer) hinzufügt, die man einmal im Batch füllt und danach per Trigger mitpflegt; lässt sich der Input nicht eindeutig interpretieren, weil ein Benutzer aetsch eintippt, schickt der Trigger eine Escape Message.
D*B
Moin Moin,
ich soll eine Telefonnr in einer DB suchen.
gespeichert ist diese Nr. mal mit *blank
01234 56 78 12
mal mit /
01234/4578 12
mal mit -
und so weiter, und so weiter..
(alles was man in ein alpha Feld reinkrigt, ist da auch drinn !!
kann ich mit einer view/ LF / Funktion ... das Feld
sehr performant vom 'Müll' befreien um via gegebener Telefonnr schnell die Adresse zu finden ?
dachte erst, jede gegebene Ziffer mit '%' zu trennen, abwer das ist weder schnell noch 100 % richtig
Danke
Robi
Ich habe hierfür eine SQL-Funktion erstellt, die eine unformartierte Rufnummer entgegennimmt und eine Rufnummer ohne Leerstellen und Sonderzeichen zurückgibt:
+ 49 1234/4564 - 123
ergibt
4912344564123
Hiermit lässt sich dann sehr gut mit LIKE suchen:
NormTelNr(kdntel) LIKE "%123%"
Das geht eigentlich auch sehr schnell.
Aber nur bei ein paar Hundert oder wenigen Tausend Sätzen.
Mach das mal mit 100.000 oder mehr.
Der like zwingt zu einem Tablescan.
bei 19 Mio Adressen ...
Wir haben uns für eine seperate Datei mit 'ordentlichen ' Tel.Nr entschieden
Robi
Das ist auch besser so, Dieters Hinweis mit einem Trigger erleichtert das manchmal ohne die bestehende Anwendung nennenswert anpassen zu müssen.