Julian Hofmann: SQL: case-sensitive Abfrage?

Hallo.

Vielleicht ist der Abend ja doch schon zu spät (oder der Morgen zu früh). Irgendwie will mein SELECT-Ausdruck nicht so wie ich will.

In einer Datenbank sind für eine Suchmaschine alle Keywords gespeichert. Warum liefert bitte
  SELECT key_id FROM keywords WHERE keyword = 'Standard'
und
  SELECT key_id FROM keywords WHERE keyword = 'standard'
die selben Ergebnisse (für flüchtige Leser: einmal groß- und einmal kleingeschrieben)?

Auch per Regexp kam ich nicht wirklich weiter (was aber auch dran liegen mag, dass ich das nicht gerade eine Leuchte bin).

Arbeitet (my)SQL bei Vergleichen standardmäßig case-sensitive oder -insensitive?

Grüße aus Würzburg in die Nacht
Julian

  1. hallo, ich habe es direkt in der Kommandozeile ausprobiert - es ist also wurst ob du 'standard' oder 'Standard' schreibst...
    da ist die erklärung dazu
    http://www.netrpx.com/tutorials/mysql/mysql8.php
    das funktioniert aber nur mit regexp - bei mir hat es doch hinhauen können.
    Bsp.:
    also in der DB ist kati kleingeschrieben

    select * from tabelle where regexp name = "Kati";   //gefunden
    select * from tabelle where regexp binary name = "Kati"; //empty set

    cu kati

    Hallo.

    Vielleicht ist der Abend ja doch schon zu spät (oder der Morgen zu früh). Irgendwie will mein SELECT-Ausdruck nicht so wie ich will.

    In einer Datenbank sind für eine Suchmaschine alle Keywords gespeichert. Warum liefert bitte
      SELECT key_id FROM keywords WHERE keyword = 'Standard'
    und
      SELECT key_id FROM keywords WHERE keyword = 'standard'
    die selben Ergebnisse (für flüchtige Leser: einmal groß- und einmal kleingeschrieben)?

    Auch per Regexp kam ich nicht wirklich weiter (was aber auch dran liegen mag, dass ich das nicht gerade eine Leuchte bin).

    Arbeitet (my)SQL bei Vergleichen standardmäßig case-sensitive oder -insensitive?

    Grüße aus Würzburg in die Nacht
    Julian

    1. Hallo Kati.

      vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...

      select * from tabelle where regexp binary name = "Kati"; //empty set

      spuckt nen Syntaxfehler bei mir aus. Mit
        select * from tabelle where name regexp binary "Kati"; //empty set
      klappt's aber.

      Grüße aus Würzburg
      Julian

      1. sorry, war ein Fehler von mir... ich hätte auf das Msdos-Fenster besser gucken müssen :-) ich habe das beim Threadschreiben vertauscht.

        wollte dich net verwirren.

        cu kati

        Hallo Kati.

        vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...

        select * from tabelle where regexp binary name = "Kati"; //empty set
        spuckt nen Syntaxfehler bei mir aus. Mit
          select * from tabelle where name regexp binary "Kati"; //empty set
        klappt's aber.

        Grüße aus Würzburg
        Julian

      2. Aloha!

        vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...

        Ich würde nicht deshalb, weil du ein simples Wort suchst, gleich mit RegEx um mich schlagen.

        Wenn du die Tabelle anlegst, hast du die Möglichkeit, auch Textfelder als "binary" zu deklarieren. Normale Textfelder sind case-insensitiv, binäre Textfelder sind case-sensitiv. Mußt du halt so anlegen, wie du es brauchst.

        - Sven Rautenberg

        1. Hi Sven.

          Na das klingt ja mal gut. Vielleicht sollte ich mich doch endlich mal tiefer in Datenbanken einarbeiten...

          Vielen Dank, werd ich doch gleich mal umsetzen und ändern.

          Grüße aus Würzburg
          Julian