Anmelden

View Full Version : Telefonnr Suche



Robi
29-06-09, 08:49
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

cbe
29-06-09, 08:56
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

BenderD
29-06-09, 08:57
... 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

mwithake
09-07-09, 15:31
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.

Fuerchau
09-07-09, 16:00
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.

Robi
09-07-09, 16:40
bei 19 Mio Adressen ...
Wir haben uns für eine seperate Datei mit 'ordentlichen ' Tel.Nr entschieden
Robi

Fuerchau
09-07-09, 16:55
Das ist auch besser so, Dieters Hinweis mit einem Trigger erleichtert das manchmal ohne die bestehende Anwendung nennenswert anpassen zu müssen.