Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak używać operatora BETWEEN w SQL Server

Serwer SQL BETWEEN Operator umożliwia testowanie między zakresem wartości w zapytaniach. Na przykład możesz sprawdzić, czy wartość znajduje się między dwiema liczbami.

BETWEEN operator jest inkluzywny, co oznacza, że ​​zawiera wartości określone w zakresie. Oznacza to, że zawiera wartości, które są większe lub równe wartości niższej oraz wartości, które są mniejsze lub równe wartości wyższej. Dlatego to tak, jakby używać >= i <= .

Przykład

Oto przykład do zademonstrowania.

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

Wynik:

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

Jak wspomniano, BETWEEN jest włącznie, więc wynik zawiera dwie wartości, które określiłem po lewej i prawej stronie AND argument.

Jest to równoważne z wykonaniem następujących czynności.

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

Wynik:

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

NOT BETWEEN

Możesz użyć NOT argument określający, że wartość nie powinna nie być między dwiema określonymi wartościami.

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

Wynik:

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

Tym razem otrzymujemy taki sam wynik, jaki uzyskalibyśmy, gdybyśmy użyli operatorów mniejszego i większego niż.

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

Wynik:

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

Gdy używasz NOT BETWEEN , jeśli chcielibyśmy uwzględnić określone wartości w teście, musielibyśmy zwiększyć/zmniejszyć wartości.

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

Wynik:

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

Tym razem widzimy, że do naszego zestawu wyników zostały dodane dwa miasta; 300 mieszkańców Fakaofo i 9696300 mieszkańców Szanghaju.

Nawiasem mówiąc, są to wszystkie stare dane próbne, więc dane dotyczące populacji prawdopodobnie w wielu przypadkach nie odzwierciedlają rzeczywistej rzeczywistości.

Oto, jak zrobimy to z operatorami Mniej niż lub Równe i Większe niż lub Równe.

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

Wynik:

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

BETWEEN z datami

Kiedy używasz BETWEEN operator w datach (takich jak data-godzina , datagodzina2 lub przesunięcie daty i godziny wartości), najlepiej używać formatu YYYYMMDD w celu uniknięcia problemów z lokalizacją (na przykład, jeśli użytkownik zmienił format daty swojej sesji).

Ponadto, jeśli nie podasz składnika czasu, domyślnie jest to 12:00 AM.

Dlatego następujące zapytanie nie zwróci żadnych wierszy zawierających część czasu po godzinie 12:00. 31.12.1973.

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

Możesz odpowiednio dostosować wartości dat lub użyć operatorów Większe niż lub Równe i Mniejsze niż.

Tak:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak porównać datetime tylko z datą w SQL Server

  2. Czy ograniczenie Check może odnosić się do innej tabeli?

  3. Konfiguracje w zakresie bazy danych SQL Server i automatyczna korekta planu

  4. Zakończenie wsparcia dla SQL Server 2008. Co teraz?

  5. Jak określić nazwę klucza podstawowego w EF-Code-First?