jackieo: Suchen

Liebes Forum,

ich möchte meine Datensatz meiner Datenbank durchsuchen.

z.B. habe ich ein Feld "text" und dieser ist gefüllt mit dem Wert "Hallo liebes Forum, ich wünsche Ihnen frohe Weihnachten!"

Jetzt möchte ich gerne NUR das Wort "wünsche" ermitteln bzw. alle Wörter auslesen, die einen Umlaut enthalten.

Habe mal "SELECT text WHERE text LIKE '%ö%' OR text LIKE '%ä%' OR text LIKE '%ü%'" versucht - aber dann erhalte ich ja den kompletten Inhalt vom Feld text...

Hat jemand einen Tipp?

LG,
jackieo

  1. Hallo,

    Hat jemand einen Tipp?

    Ja, http://dev.mysql.com/doc/refman/5.1/de/regexp.html, suche dort nach Wortgrenzen.

    vg ichbinich

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
    1. also wäre in meinem Fall dies eine richtige Lösung?

      SELECT myColumn FROM myTable WHERE (mySearchColumn REGEXP "[[:< :]]ä[[:>:]]" OR mySearchColumn REGEXP "[[:< :]]ö[[:>:]]" OR mySearchColumn REGEXP "[[:< :]]ü[[:>:]]")

      LG,
      jackieo

      1. Moin!

        SELECT myColumn FROM myTable WHERE (mySearchColumn REGEXP "[[:< :]]ä[[:>:]]" OR mySearchColumn REGEXP "[[:< :]]ö[[:>:]]" OR mySearchColumn REGEXP "[[:< :]]ü[[:>:]]")

        Nein.

        SELECT myColumn FROM myTable WHERE (mySearchColumn REGEXP ".*ä.*" OR mySearchColumn REGEXP ".*ä.*" OR mySearchColumn REGEXP ".*ö.*" OR mySearchColumn REGEXP ".*ß.*");

        Dies liefert, wenn überhaupt, noch immer die Datensätze in denen die Umlaute auftauchen und nicht die Wörter. Willst Du die Wörter, dann wünsche ich Dir viel Spaß dabei, einen Ausdruck für das SELECT zu basteln. (Und dabei, auf das Ergebnis der Abfrage zu warten.)

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. SELECT myColumn FROM myTable WHERE (mySearchColumn REGEXP ".*ä.*" OR mySearchColumn REGEXP ".*ä.*" OR mySearchColumn REGEXP ".*ö.*" OR mySearchColumn REGEXP ".*ß.*");

          Aber dann kann ich doch auch gleich das hier nehmen wie anfangs erwähnt:
          SELECT text WHERE text LIKE '%ö%' OR text LIKE '%ä%' OR text LIKE '%ü%'"

          Wenn eh nur die Datensätze ausgeliefert werden, oder?

          Ich hatte ja nur versucht, die "Wortgrenzen" zu ermitteln...

          Muss ich also per PHP den ganzen Datensatz per explode in ein Array wandeln und dann die einzelnen Arrays durchsuchen?

          Gruß,
          jackieo

          1. Moin!

            Muss ich also per PHP den ganzen Datensatz per explode in ein Array wandeln und dann die einzelnen Arrays durchsuchen?

            Du musst vor allem bevor Du mit dem Einrichten der Datenbank und dem Programmieren anfängst einen Plan haben, was funktionieren soll und wie es funktionieren soll. Alle andere wird notwendig Murks.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

  2. Moin!

    Hat jemand einen Tipp?

    Ja. Den, dass SQL-Datenbanken dafür nicht gemacht sind und dass eine solche Abfrage, wenn überhaupt, nur unter großen Kosten möglich ist. Wenn Du Dich also schon darüber informierst, was welche Art von Datenbank leisten kann, dann schaue auch gleich nach, was ich im vorherigen mit "Kosten" meine.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

  3. Hallo,

    Jetzt möchte ich [...] alle Wörter auslesen, die einen Umlaut enthalten.

    warum speziell alle Wörter, die einen Umlaut enthalten?
    Was haben diese gemeinsam, so dass sie für einen Benutzer von Interesse sein könnten?

    Kann es sein, dass Du Probleme mit der Zeichencodierung hast?

    Freundliche Grüße

    Vinzenz