Bernd: MySQL-Abfrage where LEFT(mitarbeiter_name,1) = eine Integer

Hallo,

gibt es eine Möglichkeit mit MySQL alle Datensätze aus einer Datenbank auszulesen die mit einer Integer beginnen?
Die abgefragten Felder liegen in dem Format varchar vor. Bisher frage ich halt ca so ab:
select * from mitarbeiter where LEFT(mitarbeiter_name,1) = '1' or where LEFT(mitarbeiter_name,1) = '2' or where LEFT(mitarbeiter_name,1) = '3' usw.

mfg

Bernd

  1. Moin!

    gibt es eine Möglichkeit mit MySQL alle Datensätze aus einer Datenbank auszulesen die mit einer Integer beginnen?

    Ja.

    Die abgefragten Felder liegen in dem Format varchar vor. Bisher frage ich halt ca so ab:
    select * from mitarbeiter where LEFT(mitarbeiter_name,1) = '1' or where LEFT(mitarbeiter_name,1) = '2' or where LEFT(mitarbeiter_name,1) = '3' usw.

    Damit hast du schon eine Möglichkeit gefunden. Bis auf die syntaktische Fehlerhaftigkeit: Bitte nur ein WHERE am Anfang der Bedingung, danach nur noch mit OR verknüpfen.

    Sollte deine Frage implizit (Dein Anliegen explizit auszusprechen wäre nicht verkehrt!) den Wunsch nach einer Optimierung dieses Vorgehens anheim stellen, so sei dir gesagt: Man kann auch Strings mit größer/kleiner-Operationen vergleichen, und es gibt sogar reguläre Ausdrücke (die ich hier allerdings nicht anwenden würde).

    Um einen Bereich anzugeben, in dem sich ein String bewegen darf, eignet sich prima "BETWEEN low AND high" - in deinem Fall "BETWEEN '0' AND '9'" (weil die Null binär kleiner ist als die 1 - die ASCII-Sortierung ist hier entscheidend).

    - Sven Rautenberg

    1. Hallo,

      danke schön, klappt prima.

      Und danke für den Tabellenzerleger, hat mir schon einiges an Nerven erspart.

      mfg

      Bernd