Herbert: PHP/MYSQL Datensuche falsch?

Hallo, ich bitte mal wieder um Hilfe
Was mache ich falsch ?
ich bekomme mit dieser Abfrage auch Daten nach denen ich gar nicht gesucht habe :
where ( a_name like 'schäb%' )
Ich bekomme z.B. Schäble ( ist ja ok )
aber auch Schabel; Schabmeier ( die such ich nicht );

Ist da irgendwo eine einstellung dass PHP/MSQL die ä und a gleichsetzt ?

Viele Grüße
Herbert

  1. Hallo!

    where ( a_name like 'schäb%' )
    Ich bekomme z.B. Schäble ( ist ja ok )
    aber auch Schabel; Schabmeier ( die such ich nicht );

    Versuche mal:

    WHERE LOWER(a_name) BINARY LIKE 'schäb%'

    André Laugks

  2. Hello,

    Ist da irgendwo eine einstellung dass PHP/MSQL die ä und a gleichsetzt ?

    Ja. Das ist vom verwendeten Zeichensatz und Collating Key abhängig.
    Ich weiß aber auch nicht aus dem Handgelenk, wie und wo man das bei welcher _VERSION_ einstellt. Die Möglichkeiten sind nämlich zu allem Übel auch versionsabhängig.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      Ist da irgendwo eine einstellung dass PHP/MSQL die ä und a gleichsetzt ?

      Ja. Das ist vom verwendeten Zeichensatz und Collating Key abhängig.
      Ich weiß aber auch nicht aus dem Handgelenk, wie und wo man das bei welcher _VERSION_ einstellt. Die Möglichkeiten sind nämlich zu allem Übel auch versionsabhängig.

      http://dev.mysql.com/doc/mysql/en/string-collating.html

      Das ist die einzige Stelle, die ich so schnell finden konnte.

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  3. ... vielen Dank für die schnelle Hilfe.
    Das mit dem verwendeten Zeichensatz und Collating Key habe ich noch nicht so richtig kapiert; ich mache mich schlau.
    Die ander Lösung hab ich auf die Schnelle probiert, das klappt.

    Viele Grüße
    Herbert

    1. echo $begrüßung;

      Das mit dem verwendeten Zeichensatz und Collating Key habe ich noch nicht so richtig kapiert; ich mache mich schlau.

      Dazu kann ich auch noch http://dev.mysql.com/tech-resources/articles/4.1/unicode.html empfehlen.

      echo "$verabschiedung $name";

    2. Hello,

      ... vielen Dank für die schnelle Hilfe.
      Das mit dem verwendeten Zeichensatz und Collating Key habe ich noch nicht so richtig kapiert; ich mache mich schlau.
      Die ander Lösung hab ich auf die Schnelle probiert, das klappt.

      Die ist dann aber wieder Case-Sensitive.

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. yo,

        Die ist dann aber wieder Case-Sensitive.

        nein, so wie sie aufgebaut ist, ist die abfrage unter dem strich nicht case-sensitive, da er beide seiten des vergleichs immer auf kleine buchstaben setzt oder mit anderen worten, es gibt niemals grossbuchstaben.

        Ilja

        1. Hello,

          Die ist dann aber wieder Case-Sensitive.

          nein, so wie sie aufgebaut ist, ist die abfrage unter dem strich nicht case-sensitive, da er beide seiten des vergleichs immer auf kleine buchstaben setzt oder mit anderen worten, es gibt niemals grossbuchstaben.

          Ups, ja. Da hast Du Recht. Aber "lower(a_name)" kostet richtig Kraft, da i.d.R. kein vorhandener Index benutzt werden kann.

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau