AllesMeins: MySQL: Mustersuche

Hiho,

ich würde gerne in einer MySQL Datenbank ein Art Mustersuche realisieren. Also ich habe einen String der aus 8 zeichen besteht. Nun möchte ich dazu gerne aus einer Tabelle einen dazu passenden String raus suchen. Allerdings soll dies mit der Möglichkeit von Wildcards in dem String in der Datenbank funktionieren.
Also beispiel ich habe den folgenden string "9a55a6fr" und sei nun * mein Wildcard Zeichen. Dann möchte ich aus der Tabellek alle passenden Strings raussuchen. Sei es nun der komplett passende "9a55a6fr", aber auch "9a55*6fr" oder "9a**a6f*". Dabei soll das * jeweils nur für genau ein Zeichen stehen. Ist das noch mit MySQL machbar oder muss ich die ganze tabelle ziehen und das dann irgendwie mit PHP realisieren?

Grüße

Marc

  1. echo $begrüßung;

    ich würde gerne in einer MySQL Datenbank ein Art Mustersuche realisieren.

    MySQL bietet dafür ein paar String-Vergleichsfunktionen an (z.B: LIKE, REGEXP).

    Ist das noch mit MySQL machbar oder muss ich die ganze tabelle ziehen und das dann irgendwie mit PHP realisieren?

    Wahrscheinlich beides, allerdings andersrum. Ich denke, dass du mehrere Vergleichsbedingungen verknüpfen musst, und die kannst du mit PHP erstellen und zusammenfügen.

    echo "$verabschiedung $name";

  2. yo,

    wildcard zeichen sind % und _ siehe auch:

    [lunk:http://dev.mysql.com/doc/mysql/en/string-comparison-functions.html]

    Ilja

    1. Hi,

      wildcard zeichen sind % und _ siehe auch:

      und was ist wenn mein gesuchtes zeichen % oder _ ist?

      Tschö

      1. Hallo Poldi,

        und was ist wenn mein gesuchtes zeichen % oder _ ist?

        Lies doch bitte die Seite die Ilja gepostet hat - da steht es drin.

        Grüße aus Nürnberg
        Tobias

    2. Hiho,

      diese wildcards funktionieren aber in die falsche Richtung. Das funktioniert wenn ich den String xyz in der Datenbank habe und von PHP irgendwas mit wildcards kommt, ich also nach x_z frage. Ich will es aber andersrum haben. Ich habe in PHP xyz und in der Datenbank eine Reihe von Mustern von denen eines oder mehrer passen können. Also sowas wie ein

      SELECT * FROM tabelle WHERE muster = 'xyz', das mir dann aus der Datenbank die Einträge bei denen muster = xyz ist, aber auch die bei denen Muster = x_z oder _yz ist rausgeben würde.

      Marc

      1. Hallo Marc,

        diese wildcards funktionieren aber in die falsche Richtung. Das funktioniert wenn ich den String xyz in der Datenbank habe und von PHP irgendwas mit wildcards kommt, ich also nach x_z frage. Ich will es aber andersrum haben. Ich habe in PHP xyz und in der Datenbank eine Reihe von Mustern von denen eines oder mehrer passen können.

        Dann dreh die Parameter bei LIKE doch einfach um:
         SELECT id, muster FROM muster WHERE 'abc' LIKE muster
        findet Datensätze bei denen in der Spalte 'muster' z.B. der Wert 'a_c', 'a%c' oder 'ab_' drinsteht.

        Grüße aus Nürnberg
        Tobias

        1. Hiho,

          Dann dreh die Parameter bei LIKE doch einfach um:

          Warum ins komplizierte schweifen, wenn das gute doch so einfach ist :)

          Vielen Dank, hab nicht mit so ner leichten Lösung gerechnet

          Marc