WHERE trong SQL Server

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.

Bảng Products trong cơ sở dữ liệu mẫu 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 bản ghi bằng một biểu thức đơn giản

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 đáp ứng hai điều kiện

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 bằng cách sử dụng toán tử so sánh

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ả:

Tìm các bản ghi đáp ứng bất kỳ điều kiện nào trong hai điều kiện

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 ghi có giá trị nằm trong khoảng giá trị

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 ghị có giá trị trong danh sách các giá trị

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ả:

Tìm các bản ghi có giá trị chứa một chuỗi

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.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *