SQL: BETWEEN, IN & LIKE

Operator: BETWEEN

Der BETWEEN Operator gibt die Datensätze in einen vorgegebenen Intervall aus. Die Werte der BETWEEN-Funktion können Zahlen, Texte oder Daten sein. Die allgemeine BETWEEN Syntax lautet:

SELECT Columnname FROM Table WHERE Columnname BETWEEN value A AND value B;

Beispiel: Ausgabe aller Schauspieler, die eine „actor_ID“ zwischen 10 und 20 haben:

SELECT actor_id, first_name, last_name FROM actor WHERE actor_id BETWEEN 10 AND 20;

Beachte: Bei der Abfrage werden die gewählten Werte der Intervallgrenzen (hier actor_id 10 und 20) mit ausgegeben.

Beispiel mit Texten: Ausgabe aller Schauspieler, die einen Vornamen zwischen „Ben“ und „Cameron“ haben:

SELECT first_name, last_name FROM actor WHERE first_name BETWEEN ‚BEN‘ AND ‚CAMERON‘;

Mit NOT BETWEEN kannst du dir die Datensätze außerhalb des abgefragten Intervalls anzeigen lassen:

SELECT first_name, last_name FROM actor WHERE first_name NOT BETWEEN ‚BEN‘ AND ‚CAMERON‘;

Operator: IN

Der IN Operator ermöglicht eine Ausgabe von mehreren definierten Werten und kann anstatt mehreren OR-Funktionen genutzt werden. Somit vereinfacht der IN Operator die Struktur komplexer OR-Bedingungen. Die allgemeine IN Syntax lautet:

SELECT Columnname FROM Table WHERE Columnname IN (value A, value B, …);

Beispiel: Alle Schauspieler mit den Vornamen Ben, Julia oder Ben auswählen:

SELECT first_name, last_name FROM actor WHERE first_name IN (‚BEN‘,’JULIA‘,’WOODY‘);

Die IN-Funktion prüft also, ob der Vorname eines Schauspielers in der Liste („BEN“,“Julia“,“Woody“) vorkommt und gibt den Datensatz aus, sobald die Bedingung WAHR ist.

Der IN-Operator kann auch Ergebnismengen mit NOT ausschließen. Um bestimmte Ergebnismengen auszuschließen, muss das Wort NOT vor den IN-Operator hinzugefügt werden.

Wichtig: Der IN-Operator kann nicht mit Platzhaltern gefüllt werden. Im folgenden Beispiel siehst du den Beweis. Hier wird für ‚BE_‘ nichts ausgegeben, obwohl der Unterstrich ein Platzhalter darstellen soll:

Operator: LIKE

Der LIKE-Befehl ermöglicht eine Suche mit einem Vergleich auf Textmuster, anstelle eines festen Suchbegriffs wird LIKE auf der Grundlage eines definierten Fragments ausgeführt. Oft wird der LIKE-Befehl in Texten verwendet. Die allgemeine SQL-Syntax lautet:

SELECT Columnname FROM Table WHERE Columnname LIKE muster;

LIKE nutzt die Platzhalter „%“ (Prozent) und „_“ (Unterstrich):

  • Prozent:           entspricht einer beliebigen Anzahl von Zeichen
  • Unterstrich:     entsprich genau einem beliebigen Zeichen

Beispiele:

LIKE mit %-Platzhalter: Alle Schauspieler, die einen Vornamen besitzen der mit „BE“ beginnt:

SELECT first_name, last_name FROM actor WHERE first_name LIKE ‚BE%‘;

LIKE mit _-Platzhalter: Alle Schauspieler, deren Vorname mit „BE“ startet und noch genau einen dritten Buchstaben hat:

SELECT first_name, last_name FROM actor WHERE first_name LIKE ‚BE_‘;

Du kannst auch mehrere Unterstriche nacheinander nutzen um die exakte Anzahl an weiteren Zeichen anzugeben:

Hier z.B. mit 2 Platzhaltern:

Auch der LIKE-Operator kann Datensätze mit NOT ausschließen. Dafür muss nur das Wort NOT vor den LIKE-Operator gesetzt werden:

SELECT first_name, last_name FROM actor WHERE first_name NOT LIKE ‚BE_‘;

CASE-SENSITIV mit BINARY:

Noch ein Hinweis: MySQL ist nicht case-sensitiv! Das bedeutet, dass die beiden Strings ‚ben‘ und ‚BEN‘ bei Abfragen als identisch betrachtet werden. Möchte man, dass die Groß- und Kleinschreibung berücksichtigt wird muss der Befehl BINARY mit in die SQL Syntax aufgenommen werden:

SELECT first_name, last_name FROM actor WHERE BINARY first_name LIKE ‚BE%‘;

(Visited 8.179 times, 1 visits today)

2 Antworten auf „SQL: BETWEEN, IN & LIKE“

  1. Sehr geehrte Frau Hönick,

    vielen Dank für Ihren schönen Beitrag. Mich beschäftigt schon länger eine Frage, vielleicht hätten Sie mir da einen Tipp.

    Ich habe Daten als Datetime, Temperatur, ect… in der Datenbank in der Auflösung von 1 Minute. Bei der Abfrage möchte ich die Daten reduzieren indem ich die Zeitintervalle auf 15 Minuten festlege.
    D.h. [0, 15, 30, 45] Minuten und die die Temperaturwerte sollen in diesem Zeitraster gemittelt werden.

    Hätten sie mir da ein geschicktes Vorgehen?

Schreibe einen Kommentar zu Mikey Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert