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

SQL GIỮA Toán tử cho người mới bắt đầu

Trong SQL, BETWEEN toán tử cho phép bạn kiểm tra các giá trị nằm trong một phạm vi nhất định.

BETWEEN toán tử chỉ định một phạm vi để kiểm tra và nó trả về TRUE khi toán hạng nằm trong phạm vi so sánh.

Bảng nguồn

Bảng sau được sử dụng cho các ví dụ trên trang này.

SELECT * FROM Pets;

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh BETWEEN nhà điều hành.

SELECT * FROM Pets 
WHERE DOB BETWEEN '2018-10-01' AND '2020-09-17';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Trong ví dụ này, chúng tôi trả về tất cả các hàng có DOB cột nằm trong khoảng từ 2018-10-012020-09-17 .

Trong trường hợp này, bốn hàng phù hợp với tiêu chí đó và do đó, bốn hàng đã được trả về.

GIỮA là Bao gồm

BETWEEN nhà điều hành. là bao gồm. Nghĩa là, nó bao gồm các giá trị ở mỗi đầu của phạm vi. Nếu bạn nhìn vào kết quả trong ví dụ trước, bạn sẽ thấy rằng có các giá trị ở cả hai đầu khớp chính xác với ngày chúng tôi đã cung cấp.

Điều này cũng giống như việc sử dụng toán tử lớn hơn hoặc bằng với (>= ) được kết hợp với toán tử nhỏ hơn hoặc bằng với (<= ).

SELECT * FROM Pets 
WHERE DOB >= '2018-10-01' AND DOB <= '2020-09-17';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Để biến nó thành một phạm vi độc quyền, hãy sử dụng giá trị lớn hơn (> ) và nhỏ hơn (< ) toán tử.

SELECT * FROM Pets 
WHERE DOB > '2018-10-01' AND DOB < '2020-09-17';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
+---------+-------------+-----------+-----------+------------+

Nếu bạn phải sử dụng BETWEEN , bạn sẽ cần thu hẹp phạm vi cho phù hợp.

Như thế này:

SELECT * FROM Pets 
WHERE DOB BETWEEN '2018-10-02' AND '2020-09-16';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
+---------+-------------+-----------+-----------+------------+

Sử dụng giá trị số

Các ví dụ trước sử dụng ngày tháng, nhưng bạn không chỉ giới hạn ở ngày tháng. Dưới đây là một ví dụ sử dụng giá trị số.

SELECT * FROM Pets 
WHERE OwnerId BETWEEN 2 AND 3;

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 7       | 3           | 2         | Bark      | NULL       |
+---------+-------------+-----------+-----------+------------+

Sử dụng giá trị chuỗi

Chúng tôi có thể tiến thêm một bước nữa và sử dụng BETWEEN để so sánh hai cột chuỗi.

SELECT * FROM Pets 
WHERE PetName BETWEEN 'Meow' AND 'Wag'
ORDER BY PetName;

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 8       | 2           | 4         | Meow      | NULL       |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
+---------+-------------+-----------+-----------+------------+

Bạn cần phải cẩn thận. Bạn có thể nghĩ rằng chúng ta chỉ có thể sử dụng chữ cái đầu tiên, như sau:

SELECT * FROM Pets 
WHERE PetName BETWEEN 'M' AND 'W'
ORDER BY PetName;

Nhưng điều đó sẽ dẫn đến điều này:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 8       | 2           | 4         | Meow      | NULL       |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
+---------+-------------+-----------+-----------+------------+

Nó không bao gồm Wag giống như truy vấn trước đó đã làm. Đó là bởi vì BETWEEN nhìn vào toàn bộ chuỗi. Trong trường hợp đó, Wag lớn hơn W và vì vậy nó không được đưa vào kết quả.


  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ách cập nhật một cột dựa trên một cột khác trong SQL

  2. Thông báo về tính khả dụng chung của SQL Safe Backup 8.7.2

  3. Toán tử SQL không bằng với () cho người mới bắt đầu

  4. Thiết kế Cơ sở dữ liệu cho Cổng Thông tin Việc làm Trực tuyến

  5. Làm việc với Dữ liệu JDBC không phải ASCII trong Talend