English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden Sie lernen, wie man die Operatoren IN und BETWEEN verwendet und diese mit dem WHERE-Unterabschnitt kombiniert.
Im vorherigen Kapitel haben wir gelernt, wie man mehrere Bedingungen mit den Operatoren AND und OR kombiniert. Manchmal ist dies jedoch nicht ausreichend, zum Beispiel wenn man überprüfen muss, ob ein Wert in einem Bereich oder einer Gruppe von Werten liegt.
Hier tritt der IN- und der BETWEEN-Operator auf, der es Ihnen ermöglicht, einen exklusiven Bereich oder eine Gruppe von Werten zu definieren, anstatt separate Bedingungen zu kombinieren.
Der IN-Operator ist ein logischer Operator, der verwendet wird, um zu überprüfen, ob ein bestimmter Wert in einer Gruppe von Werten vorhanden ist. Sein grundlegender Syntax kann wie folgt dargestellt werden:
SELECT column_list FROM table_name WHERE column_name IN (value)1, value1,...);
Hier,column_listist die Spalte der Datenbanktabelle, deren Wert Sie erhalten möchten/FeldNamez.B.Name,Alter,Länderu.ä.
Denken Sie daran, dass wir in der Datenbank eineemployeesTabelle, die folgende Aufzeichnungen hat:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | Martin Blank | +--------+--------------+------------+--------+---------+
Die folgenden SQL-Anweisungen geben nur zurückdept_idFür1oder3aller Arbeitnehmer.
Beispiel * FROM employees WHERE dept_id IN (1, 3);
Nach der Durchführung der Abfrage erhalten Sie wie folgt die Ergebnismenge:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
Gleichzeitig können Sie den NOT IN-Operator verwenden, der genau dem IN-Operator gegenübersteht. Die folgende SQL-Anweisung gibt zurückdept_idnicht1oder3aller Arbeitnehmer außer jenen.
Beispiel * FROM employees WHERE dept_id NOT IN (1, 3);
Nach der Durchführung der Abfrage erhalten Sie wie folgt die Ergebnismenge:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
Wenn der Wert in einer Spalte in einem bestimmten Bereich liegt, möchten Sie manchmal eine Zeile auswählen. Solche Bedingungen sind bei der Verarbeitung numerischer Daten häufig.
Um eine Abfrage basierend auf dieser Bedingung durchzuführen, können Sie den BETWEEN-Operator verwenden. Es ist ein logischer Operator, der Ihnen ermöglicht, den zu testenden Bereich zu spezifizieren, wie folgt:
SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;
Lassen Sie uns basierend aufMitarbeiter (employees)Erstellen und führen Sie die Abfrage mit den Bereichsbedingungen der Tabelle aus.
Die folgenden SQL-Anweisungen geben nur zurückemployeesIn der Tabelle sind die Gehälter7000 bis9000 zwischen diesen Arbeitnehmern.
Beispiel * FROM employees WHERE salary BETWEEN 7000 AND 9000;
Nach der Ausführung erhalten Sie wie folgt ausgegeben:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
Beim Verwenden des BETWEEN-Operators zusammen mit Datenbankwerten für Datum oder Zeit verwenden Sie bitte die CAST()-Funktion, um diese Werte in den erforderlichen Datentyp zu konvertieren, um die besten Ergebnisse zu erzielen. Zum Beispiel, wenn Sie mit " 2016-12-31Solche Zeichenfolgen wie "
Die folgenden SQL-Anweisungen wählen aus:2006Jahr1Monat1Tag (d.h. " 2006-01-01”) bis2016Jahr12Monat31Tag (d.h. " 2016-12-31)之间的所有雇员:
Beispiel * FROM employees WHERE hire_date BETWEEN CAST('2006-01-01AS DATE) AND CAST('2016-12-31AS DATE);
Nach der Durchführung der Abfrage erhalten Sie wie folgt die Ergebnismenge:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | Martin Blank | +--------+--------------+------------+--------+---------+
Zeichenfolgenbereich definieren
Beispiel * FROM employees WHERE emp_name BETWEEN 'O' AND 'Z';
Nach der Ausführung erhalten Sie wie folgt ausgegeben:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+