Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng toán tử IN
trong SQL Server để kiểm tra xem một giá trị có khớp với bất kỳ giá trị nào trong danh sách hay không.
Các toán tử IN
trong SQL Server là một toán tử logic cho phép bạn kiểm tra xem một giá trị cụ thể phù hợp với bất kỳ giá trị trong danh sách.
Sau đây minh họa cú pháp của toán tử IN
trong SQL Server:
column | expression IN ( v1, v2, v3, ...)
Trong cú pháp này:
Nếu một giá trị trong cột hoặc biểu thức bằng với bất kỳ giá trị nào trong danh sách, kết quả của toán tử IN
là TRUE
.
Các toán tử IN
là tương đương với nhiều toán tử OR
, do đó hai biểu thức sau là tương đương:
column IN (v1, v2, v3)
column = v1 OR column = v2 OR column = v3
Để phủ định toán tử IN
, bạn sử dụng toán tử NOT IN
như sau:
column | expression NOT IN ( v1, v2, v3, ...)
Kết quả toán tử NOT IN
là TRUE
nếu cột hoặc biểu thức không bằng bất kỳ giá trị nào trong danh sách.
Ngoài danh sách các giá trị, bạn có thể sử dụng subquery (truy vấn con) để trả về danh sách các giá trị với toán tử IN
như dưới đây:
column | expression IN (subquery)
Trong cú pháp này, truy vấn con là một câu lệnh SELECT
trả về một danh sách các giá trị của một cột.
Lưu ý rằng nếu một danh sách chứa NULL
, kết quả của toán tử IN
hoặc NOT IN
sẽ là UNKNOWN
.
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 toán tử IN trong SQL Server.
Câu lệnh sau đây tìm kiếm các sản phẩm có giá niêm yết là một trong các giá trị sau: 89,99, 109,99 và 159,99:
SELECT
product_name,
list_price
FROM
production.products
WHERE
list_price IN (89.99, 109.99, 159.99)
ORDER BY
list_price;
Đây là kết quả:
Truy vấn trên tương đương với truy vấn sau sử dụng toán tử OR
để thay thế:
SELECT
product_name,
list_price
FROM
production.products
WHERE
list_price = 89.99 OR
list_price = 109.99 OR
list_price = 159.99
ORDER BY
list_price;
Để tìm các sản phẩm có giá niêm yết không phải là một trong các giá trên, bạn sử dụng toán tử NOT IN
như trong truy vấn sau:
SELECT
product_name,
list_price
FROM
production.products
WHERE
list_price NOT IN (89.99, 109.99, 159.99)
ORDER BY
list_price;
Đây là kết quả:
Truy vấn sau đây trả về danh sách id sản phẩm của các sản phẩm của cửa hàng có id cửa hàng bằng 1 và có số lượng lớn hơn hoặc bằng 30:
SELECT
product_id
FROM
production.stocks
WHERE
store_id = 1 AND quantity >= 30;
Đây là kết quả:
Bạn có thể sử dụng truy vấn ở trên dưới dạng subquery như được hiển thị trong truy vấn sau:
SELECT
product_id,
product_name,
list_price
FROM
production.products
WHERE
product_id IN (
SELECT
product_id
FROM
production.stocks
WHERE
store_id = 1 AND quantity >= 30
)
ORDER BY
product_name;
Đây là kết quả:
Trong ví dụ này:
Để biết thêm thông tin về truy vấn con, hãy xem hướng dẫn subquery trong SQL Server.
Trong hướng dẫn này, bạn đã học cách sử dụng toán tử IN
trong SQL Server để kiểm tra xem một giá trị có khớp với bất kỳ giá trị nào trong danh sách hoặc được trả về bởi một truy vấn con hay không.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.
Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.