sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruges BETWEEN-operatøren i SQL Server

SQL-serveren BETWEEN operator giver dig mulighed for at teste mellem en række værdier i dine forespørgsler. For eksempel kan du teste, at en værdi er mellem to tal.

BETWEEN operator er inkluderende, hvilket betyder, at den inkluderer de værdier, du angiver inden for området. Det vil sige, at det inkluderer værdier, der er større end eller lig med den lavere værdi, og værdier, der er mindre end eller lig med den højere værdi. Derfor er det ligesom at bruge >= og <= .

Eksempel

Her er et eksempel til at demonstrere.

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

Resultat:

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

Som nævnt BETWEEN er inklusive, så resultatet inkluderer de to værdier, som jeg har angivet til venstre og højre for AND argument.

Dette svarer til at gøre følgende.

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

Resultat:

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

NOT BETWEEN

Du kan bruge NOT argument for at angive, at værdien ikke skal være mellem de to angivne værdier.

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

Resultat:

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

Denne gang får vi det samme resultat, som vi ville få, hvis vi havde brugt mindre end og større end-operatørerne.

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

Resultat:

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

Når du bruger NOT BETWEEN , hvis vi ville inkludere de angivne værdier i testen, ville vi være nødt til at øge/dekrementere værdierne.

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

Resultat:

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

Denne gang ser vi, at to byer tilføjes til vores resultatsæt; Fakaofo med en befolkning på 300 og Shanghai med en befolkning på 9696300.

Dette er i øvrigt alle gamle stikprøvedata, så befolkningstallene afspejler sandsynligvis ikke den faktiske virkelighed i mange tilfælde.

Sådan gør vi det med mindre end eller lig med-operatørerne og større end eller lig med.

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

Resultat:

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

BETWEEN med Datoer

Når du bruger BETWEEN operatør på datoer (såsom datotid , datetime2 eller datotidsforskydning værdier), er det bedst at bruge formatet YYYYMMDD for at undgå problemer med lokalitet (f.eks. hvis brugeren har ændret datoformatet for sin session).

Desuden, hvis du ikke angiver tidskomponenten, er den som standard 12:00 AM.

Derfor ville følgende forespørgsel ikke returnere nogen rækker, der indeholder en tidsdel efter kl. 12.00. den 1973-12-31.

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

Du kan enten justere dine datoværdier i overensstemmelse hermed, eller du foretrækker måske at bruge operatorerne Større end eller Lige til og Mindre end.

Sådan:

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

  1. Sådan installeres MariaDB-databasen i Debian 10

  2. Brugerdefinerede grafer til at overvåge dine MySQL-, MariaDB-, MongoDB- og PostgreSQL-systemer - ClusterControl Tips &Tricks

  3. Med sqlalchemy hvordan man dynamisk binder til databasemotoren på en per-anmodningsbasis

  4. Undersøger en ORA 028513 DG4ODBC-fejl