WHERE trong SQL Server
Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng mệnh đề WHERE
trong SQL Server để lọc các bản ghi sẽ được trả về bởi một truy vấn.
Giới thiệu về mệnh đề WHERE trong SQL Server
Khi bạn sử dụng câu lệnh SELECT
để truy vấn dữ liệu trong một bảng, bạn sẽ nhận được tất cả các bản ghi của bảng đó, điều này là không cần thiết vì ứng dụng chỉ có thể xử lý một số lượng các bản ghi nhất định tại thời điểm đó.
Để lấy các bản ghi từ bảng thỏa mãn một hoặc nhiều điều kiện, bạn sử dụng mệnh đề WHERE
như sau:
SELECT
select_list
FROM
table_name
WHERE
search_condition;
Trong mệnh đề WHERE
, bạn chỉ định một điều kiện tìm kiếm để lọc các bản ghi được trả về bởi mệnh đề FROM
. Mệnh đề WHERE
chỉ trả về các bản ghi thỏa mãn điều kiện tìm kiếm (điều kiện tìm kiếm được đánh giá là TRUE
).
Điều kiện tìm kiếm là một biểu thức logic hoặc kết hợp nhiều biểu thức logic. Trong SQL, một biểu thức logic thường được gọi là một vị ngữ (predicate).
Lưu ý rằng SQL Server sử dụng logic ba giá trị khi đánh giá một biểu thức logic là TRUE
, FALSE
hoặc UNKNOWN
. Mệnh đề WHERE
sẽ không trả lại bất kỳ bản ghi nào có điều kiện tìm kiếm được đánh giá là FALSE
hoặc UNKNOWN
.
Ví dụ về WHERE trong SQL Server
Chúng tôi sẽ sử dụng bảng products
từ cơ sở dữ liệu mẫu để làm ví dụ minh họa cho mệnh đề WHERE trong SQL Server.
Tìm các bản ghi đáp ứng một điều kiện đơn giản
Câu lệnh sau lấy tất cả các sản phẩm có id loại sản phẩm là 1:
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
category_id = 1
ORDER BY
list_price DESC;
Đây là kết quả:
Tìm các bản ghi đáp ứng hai điều kiện
Ví dụ sau đây trả về các sản phẩm đáp ứng hai điều kiện: mã loại sản phẩm là 1 và năm kiểu mẫu là 2018. Nó sử dụng toán tử logic AND
để kết hợp hai điều kiện.
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
category_id = 1 AND model_year = 2018
ORDER BY
list_price DESC;
Đây là kết quả:
Tìm các bản ghi bằng cách sử dụng toán tử so sánh
Câu lệnh sau đây tìm kiếm các sản phẩm có giá niêm yết lớn hơn 300 và năm kiểu mẫu là 2018.
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price > 300 AND model_year = 2018
ORDER BY
list_price DESC;
Đây là kết quả:
Tìm các bản ghi đáp ứng bất kỳ điều kiện nào trong hai điều kiện
Truy vấn sau đây tìm kiếm các sản phẩm có giá niêm yết lớn hơn 3.000 hoặc năm kiểu mẫu là 2018. Bất kỳ sản phẩm nào đáp ứng một trong các điều kiện này đều được bao gồm trong tập kết quả.
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price > 3000 OR model_year = 2018
ORDER BY
list_price DESC;
Đây là kết quả:
Lưu ý rằng toán tử OR
đã được sử dụng để kết hợp các biểu thức điều kiện.
Tìm các bản ghi có giá trị nằm trong khoảng giá trị
Câu lệnh sau đây tìm kiếm các sản phẩm có giá niêm yết nằm trong khoảng từ 1.899 đến 1.999,99 sử dụng toán tử BETWEEN
:
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price BETWEEN 1899.00 AND 1999.99
ORDER BY
list_price DESC;
Đây là kết quả:
Tìm các bản ghị có giá trị trong danh sách các giá trị
Ví dụ sau sử dụng toán tử IN
để tìm các sản phẩm có giá niêm yết là 299,99 hoặc 466,99 hoặc 489,99.
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
list_price IN (299.99, 369.99, 489.99)
ORDER BY
list_price DESC;
Đây là kết quả:
Tìm các bản ghi có giá trị chứa một chuỗi
Ví dụ sau sử dụng toán tử LIKE
để tìm các sản phẩm có tên chứa chuỗi Cruiser
:
SELECT
product_id,
product_name,
category_id,
model_year,
list_price
FROM
production.products
WHERE
product_name LIKE '%Cruiser%'
ORDER BY
list_price;
Đây là kết quả:
Trong hướng dẫn này, bạn đã học cách sử dụng mệnh đề WHERE
trong SQL Server để lọc các bản ghi dựa trên một hoặc nhiều điều kiện.