peterle: Suche mit mysql, wenn in der Tabelle . als Wildcard stehen

Hallo,

ich habe eine Datenbanktabelle in der Postleitzahlen mit Orten und einer weiteren, sehr speziellen Information verknüpft sind.

Leider wurde in dieser Tabelle folgende Schreibweise verwendet:

1234.
234..
und eben
34...
Die Punkte stehen als Wildcard für alle andern Ziffern des betreffenden Ortes.

Wenn aber zB 12... in der Tabelle steht, werden Suchbegriffe wie 12345, 1234%, 123% nicht gefunden.

Jetzt gibts zwei Varianten.
1. Diese Tabelle so umbauen, dass die entsprechenden Orte mit allen Ihren plz Varianten in der Tabelle stehen (puuuuh, n Haufen Arbeit).

2. Die Suche so gestallten, dass Trotzdem alles sauber gefunden wird.

Logischer Weise, wär mir die 2. Variante lieber, wenn ich wüsst, wie ich das anstelle.

Jemand ne Idee?

  1. Hi,

    Leider wurde in dieser Tabelle folgende Schreibweise verwendet:

    234..
    und eben
    34...
    Die Punkte stehen als Wildcard für alle andern Ziffern des betreffenden Ortes.

    Erster Schritt: Die Kreatur, die das verbrochen hat, einschläfern.

    Wenn aber zB 12... in der Tabelle steht, werden Suchbegriffe wie 12345, 1234%, 123% nicht gefunden.

    Jetzt gibts zwei Varianten.

    1. Diese Tabelle so umbauen, dass die entsprechenden Orte mit allen Ihren plz Varianten in der Tabelle stehen (puuuuh, n Haufen Arbeit).

    2. Die Suche so gestallten, dass Trotzdem alles sauber gefunden wird.

    Logischer Weise, wär mir die 2. Variante lieber, wenn ich wüsst, wie ich das anstelle.

    Punkte gegen „echte“ Wildcard-Zeichen austauschen wäre eine Möglichkeit.
    Dann ließe sich ein „umgekehrtes“ LIKE zur Suche nutzen.
    Sonderlich performant wird eine Suche damit aber auch nicht werden.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. hallo,

      öööhm, wassn ein umgekehrtes LIKE? EKIL? :)

      Du meinst alse statt 70... steht dann 70___ in der Zelle?

      1. Hi,

        öööhm, wassn ein umgekehrtes LIKE? EKIL? :)

        „Normalerweise“ benutzt du LIKE in der Form
        WHERE spalte LIKE 'abc%'
        um Datensätze mit Inhalten wie 'abcd', 'abc4711' etc. in spalte zu finden.

        Wenn die Spalte selber aber schon einen Inhalt in der Form 'abc%' hat - dann kannst du die Reihenfolge beider Operanden auch umdrehen:
        WHERE 'abcd' LIKE spalte

        Du meinst alse statt 70... steht dann 70___ in der Zelle?

        Ja.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Prima, das krieg ich hin. DANKE

  2. Du könntest die Tabelle umbauen und von-bis speichern. D.h. ein zweites Feld hinzufügen.
    Aus 34... wird dann "von 34000 bis 34999". Damit kannst du dann eine komplett ausgeschrieben Postleitzahl finden.
    Wenn man nach 345% sucht wirds wieder schwieriger. Dann müsste die Abfrage lauten WHERE plz_von >= 34500 AND plz_bis <= 34599 oder so.