Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So verwenden Sie den BETWEEN-Operator in SQL Server

Der SQL Server BETWEEN -Operator können Sie zwischen verschiedenen Werten in Ihren Abfragen testen. Beispielsweise könnten Sie testen, ob ein Wert zwischen zwei Zahlen liegt.

Der BETWEEN Der Operator ist inklusive, was bedeutet, dass er die Werte enthält, die Sie innerhalb des Bereichs angeben. Das heißt, es enthält Werte, die größer oder gleich dem niedrigeren Wert sind, und Werte, die kleiner oder gleich dem höheren Wert sind. Daher ist es wie mit >= und <= .

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

SELECT Name, Population
FROM city
WHERE Population BETWEEN 22000 AND 24000
ORDER BY Population ASC;

Ergebnis:

+--------------+--------------+
| Name         | Population   |
|--------------+--------------|
| Thimphu      | 22000        |
| Weno         | 22000        |
| Nuku´alofa   | 22400        |
| Douglas      | 23487        |
| Saint John´s | 24000        |
+--------------+--------------+

Wie erwähnt, BETWEEN ist inklusive, also enthält das Ergebnis die beiden Werte, die ich links und rechts von AND angegeben habe Argument.

Dies entspricht dem folgenden Vorgehen.

SELECT Name, Population
FROM city
WHERE Population >= 22000 AND Population <= 24000
ORDER BY Population ASC;

Ergebnis:

+--------------+--------------+
| Name         | Population   |
|--------------+--------------|
| Thimphu      | 22000        |
| Weno         | 22000        |
| Nuku´alofa   | 22400        |
| Douglas      | 23487        |
| Saint John´s | 24000        |
+--------------+--------------+

NOT BETWEEN

Sie können den NOT verwenden Argument, um anzugeben, dass der Wert nicht sein soll zwischen den beiden angegebenen Werten liegen.

SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 300 AND 9696300
ORDER BY Population ASC;

Ergebnis:

+-----------------+--------------+
| Name            | Population   |
|-----------------+--------------|
| Adamstown       | 42           |
| West Island     | 167          |
| São Paulo       | 9968485      |
| Seoul           | 9981619      |
| Mumbai (Bombay) | 10500000     |
+-----------------+--------------+

Dieses Mal erhalten wir das gleiche Ergebnis wie mit den Operatoren „kleiner als“ und „größer als“.

SELECT Name, Population
FROM city
WHERE Population < 300 OR Population > 9696300
ORDER BY Population ASC;

Ergebnis:

+-----------------+--------------+
| Name            | Population   |
|-----------------+--------------|
| Adamstown       | 42           |
| West Island     | 167          |
| São Paulo       | 9968485      |
| Seoul           | 9981619      |
| Mumbai (Bombay) | 10500000     |
+-----------------+--------------+

Bei Verwendung von NOT BETWEEN , wenn wir die angegebenen Werte in den Test aufnehmen wollten, müssten wir die Werte erhöhen/verringern.

SELECT Name, Population
FROM city
WHERE Population NOT BETWEEN 301 AND 9696299
ORDER BY Population ASC;

Ergebnis:

+-----------------+--------------+
| Name            | Population   |
|-----------------+--------------|
| Adamstown       | 42           |
| West Island     | 167          |
| Fakaofo         | 300          |
| Shanghai        | 9696300      |
| São Paulo       | 9968485      |
| Seoul           | 9981619      |
| Mumbai (Bombay) | 10500000     |
+-----------------+--------------+

Dieses Mal sehen wir, dass unserer Ergebnismenge zwei Städte hinzugefügt wurden; Fakaofo mit 300 Einwohnern und Shanghai mit 9696300 Einwohnern.

Übrigens sind dies alles alte Beispieldaten, sodass die Bevölkerungszahlen in vielen Fällen wahrscheinlich nicht die tatsächliche Realität widerspiegeln.

So würden wir es mit den Operatoren "Kleiner als oder gleich" und "Größer als oder gleich" machen.

SELECT Name, Population
FROM city
WHERE Population <= 300 OR Population >= 9696300
ORDER BY Population ASC;

Ergebnis:

+-----------------+--------------+
| Name            | Population   |
|-----------------+--------------|
| Adamstown       | 42           |
| West Island     | 167          |
| Fakaofo         | 300          |
| Shanghai        | 9696300      |
| São Paulo       | 9968485      |
| Seoul           | 9981619      |
| Mumbai (Bombay) | 10500000     |
+-----------------+--------------+

BETWEEN mit Datum

Wenn Sie den BETWEEN verwenden Operator für Datumsangaben (wie datetime , datetime2 , oder datetimeoffset Werte), verwenden Sie am besten das Format YYYYMMDD um lokale Probleme zu vermeiden (z. B. wenn der Benutzer das Datumsformat für seine Sitzung geändert hat).

Wenn Sie die Zeitkomponente nicht angeben, wird standardmäßig 00:00 Uhr

verwendet

Daher würde die folgende Abfrage keine Zeilen zurückgeben, die einen Zeitteil nach 00:00 Uhr enthalten. am 31.12.1973.

SELECT * FROM Artists
WHERE ActiveFrom  BETWEEN '20010101' AND '20011231';

Sie können entweder Ihre Datumswerte entsprechend anpassen oder lieber die Operatoren Größer als oder Gleich und Kleiner als verwenden.

So:

SELECT * FROM Artists
WHERE ActiveFrom  >= '20010101' AND ActiveFrom < '20011231';