Announcement

Collapse
No announcement yet.

Telefonnummer mit select ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Telefonnummer mit select ermitteln

    Hallo,

    ich habe folgendes Problem:

    Ich habe eine Datenbank mit Telefonnummern. Nun soll man nach Telefonnummern suchen können. Das Problem ist, dass die Nummern Teilweise mit - oder / getrennt sind. z.B. 0511-12345 oder 0511/4545154 oder auch 051112345.

    Der Besucher der Seite gibt nun z.B. 051112345 ein. Hierbei werden Einträge wie 0511-12345 nicht gefunden. Gibt es eine Möglichkeit, in der select-Abfrage Sonderzeichen nicht zu berücksichtigen, dass auch Nummern mit Trennzeichen gefunden werden ?
    Oder muß ich erst alle Nummern und ID's auslesen und dann separat ausfiltern ?
    In MySQL funktioniert dies mit der Funktion Replace, vielleicht gibt es eine Funktion in IB, die das gleiche erledigt.

    Vielen Dank!

    Sebastian Lorenz

  • #2
    Hallo Sebastian,<br><br>
    InterBase bietet hierfür keine Built-In Funktion, aber Du könntest z.B. eine User-Defined-Function (UDF) verwenden. Eine entsprechende UDF findest Du z.B. in den UDF-Libraries <b>FreeUDFLib</b> ( http://www.cvalde.com/misc/packages_and_utilities.htm ) oder <b>TBUDF (Version 2.2)</b> ( http://www.ulbrajp.com.br/~tecnobyte/download.htm ).<br><br>
    In FreeUDFLib: <b>f_StripString</b><br>
    In TBUDF: <b>udf_Strip</b><br><br>
    Die Verwendung könnte dann z.B. wie folgt aussehen ('-' und '/' werden herausgefiltert):<br><br>
    select * from adresse where f_stripstring(telefon, '-/') = '051112345';<br><br>
    Beachte aber, dass die Verwendung einer UDF zur Folge hat, dass bei der Suche <b>kein</b> Index verwendet wird, d.h. bei großen Datenmengen könnte dies zu Performanceproblemen führen. Hier könntest Du dann ein zusätzliches Feld mitführen das die Telefonnummern ohne die Sonderzeichen per BEFORE INSERT/UPDATE Trigger verwaltet.<br><br>
    Gruss,<br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Sebastian,<BR><BR>
      ich zerlege die Nummer so:<BR>
      where telefon like '%0%5%1%1%1%2%3%4%5'.<BR>
      OK, man findet so auch 0591112345, aber die Wahrscheinlichkeit eines nicht beabsichtigten Treffers ist doch sehr gering.<BR>
      Gruss, Fran

      Comment


      • #4
        Hallo Frank,<br><br>
        der Platzhalter <b>%</b> steht aber für null oder mehrere Zeichen, d.h. meiner Meinung nach können unbeabsichtigte Treffer (sehr) hoch sein. ;-)<br><br>
        Gruss,<br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment

        Working...
        X