Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да използвате оператора BETWEEN в SQL Server

SQL Server BETWEEN операторът ви позволява да тествате между диапазон от стойности във вашите заявки. Например, можете да тествате дали дадена стойност е между две числа.

BETWEEN операторът е включващ, което означава, че включва стойностите, които сте посочили в рамките на диапазона. Тоест, включва стойности, които са по-големи или равни на по-ниската стойност, и стойности, които са по-малки или равни на по-високата стойност. Следователно е като да използвате >= и <= .

Пример

Ето пример за демонстрация.

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

Резултат:

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

Както бе споменато, BETWEEN включва, така че резултатът включва двете стойности, които посочих отляво и отдясно на AND аргумент.

Това е еквивалентно на следното.

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

Резултат:

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

NOT BETWEEN

Можете да използвате NOT аргумент, за да посочите, че стойността трябва не да бъде между двете посочени стойности.

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

Резултат:

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

Този път получаваме същия резултат, който бихме получили, ако използвахме операторите по-малко от и по-голямо от.

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

Резултат:

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

Когато използвате NOT BETWEEN , ако искаме да включим посочените стойности в теста, ще трябва да увеличим/намалим стойностите.

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

Резултат:

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

Този път виждаме, че към нашия набор от резултати са добавени два града; Факаофо с население от 300 души и Шанхай с население от 9696300.

Между другото, това са всички стари извадкови данни, така че данните за населението вероятно не отразяват реалната реалност в много случаи.

Ето как ще го направим с операторите по-малко или равно на и по-голямо от или равно на.

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

Резултат:

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

BETWEEN с дати

Когато използвате BETWEEN оператор за дати (като datetime , дата и час2 , или datetimeoffset стойности), най-добре е да използвате формата YYYYMMDD за да се избегнат проблеми с локала (например, ако потребителят е променил формата на датата за своята сесия).

Освен това, ако не предоставите компонента за време, той по подразбиране е 12:00 сутринта.

Следователно следната заявка няма да върне редове, които съдържат времева част след 12:00 часа сутринта. на 1973-12-31.

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

Можете или съответно да коригирате стойностите на датата си, или може да предпочетете да използвате операторите По-голямо или Равно на и По-малко от.

Като това:

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. Адаптивният сървър не е наличен или не съществува грешка при свързване към SQL Server от PHP

  2. Функции за класиране в SQL Server

  3. Изчисляване на текущото общо с клауза OVER и клауза PARTITION BY в SQL Server

  4. Поправки, свързани с производителността за SQL Server 2012

  5. Автоматизиране на дефрагментацията на индекса в базата данни на MS SQL Server