Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách sử dụng toán tử GIỮA trong SQL Server

Máy chủ SQL BETWEEN toán tử cho phép bạn kiểm tra giữa một loạt các giá trị trong các truy vấn của bạn. Ví dụ:bạn có thể kiểm tra xem một giá trị có nằm giữa hai số hay không.

BETWEEN toán tử là bao gồm, có nghĩa là nó bao gồm các giá trị mà bạn chỉ định trong phạm vi. Nghĩa là, nó bao gồm các giá trị lớn hơn hoặc bằng giá trị thấp hơn và các giá trị nhỏ hơn hoặc bằng giá trị cao hơn. Do đó, nó giống như sử dụng >=<= .

Ví dụ

Đây là một ví dụ để chứng minh.

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

Kết quả:

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

Như đã đề cập, BETWEEN là bao gồm, vì vậy kết quả bao gồm hai giá trị mà tôi đã chỉ định ở bên trái và bên phải của AND đối số.

Điều này tương đương với việc làm như sau.

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

Kết quả:

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

NOT BETWEEN

Bạn có thể sử dụng NOT đối số để chỉ định rằng giá trị không nên nằm giữa hai giá trị được chỉ định.

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

Kết quả:

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

Lần này, chúng tôi nhận được kết quả tương tự nếu chúng tôi sử dụng toán tử nhỏ hơn và lớn hơn.

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

Kết quả:

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

Khi sử dụng NOT BETWEEN , nếu chúng tôi muốn bao gồm các giá trị được chỉ định trong thử nghiệm, chúng tôi sẽ cần tăng / giảm các giá trị.

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

Kết quả:

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

Lần này, chúng tôi thấy rằng hai thành phố được thêm vào tập kết quả của chúng tôi; Fakaofo với dân số 300 người và Thượng Hải với dân số 9696300.

Nhân tiện, đây là tất cả dữ liệu mẫu cũ nên số liệu dân số có thể không phản ánh thực tế thực tế trong nhiều trường hợp.

Đây là cách chúng tôi thực hiện với các toán tử Nhỏ hơn hoặc Bằng với và Lớn hơn hoặc Bằng với.

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

Kết quả:

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

BETWEEN với Ngày

Khi bạn sử dụng BETWEEN toán tử vào ngày (chẳng hạn như datetime , datetime2 hoặc datetimeoffset giá trị), tốt nhất là sử dụng định dạng YYYYMMDD để tránh bất kỳ vấn đề ngôn ngữ nào (ví dụ:nếu người dùng đã thay đổi định dạng ngày cho phiên của họ).

Ngoài ra, nếu bạn không cung cấp thành phần thời gian, thành phần này sẽ mặc định là 12:00 SA

Do đó, truy vấn sau sẽ không trả về bất kỳ hàng nào chứa phần thời gian sau 12:00 SA. vào năm 1973-12-31.

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

Bạn có thể điều chỉnh các giá trị ngày của mình cho phù hợp hoặc bạn có thể thích sử dụng các toán tử Lớn hơn hoặc Bằng và Nhỏ hơn.

Như thế này:

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. Các nguyên tắc cơ bản về quản lý tệp dữ liệu trong SQL Server

  2. Tách các giá trị được phân tách bằng dấu phẩy trong các cột thành nhiều hàng trong Sql Server

  3. TSQL Thử / Bắt trong Giao dịch hay ngược lại?

  4. Cách gửi một email HTML từ SQL Server (T-SQL)

  5. MS SQL Server trên Linux và Windows Kiểm tra hiệu suất để phát hiện sự khác biệt