22/08/2018, 10:59

Điều kiện IN trong SQL Server

Điều kiện IN được dùng trong SQL Server (Transact-SQL) để giảm thiểu việc phải sử dụng quá nhiều điều kiện OR trong các lệnh SELECT, INSERT, UPDATE hoặc DELETE. Cú pháp điều kiện IN biểu thức IN (giá trị 1, giá trị 2, … giá trị n); Tên biến hoặc ...

Điều kiện IN được dùng trong SQL Server (Transact-SQL) để giảm thiểu việc phải sử dụng quá nhiều điều kiện OR trong các lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Cú pháp điều kiện IN

biểu thức IN (giá trị 1, giá trị 2, … giá trị n);

Tên biến hoặc giá trị biến

biểu thức

Giá trị để kiểm tra

giá trị 1, giá trị 2, … giá trị n

Các giá trị để kiểm tra với biểu thức

Lưu ý

  • Điều kiện IN trong SQL Server sẽ trả về các bản ghi khi biểu thức có giá trị là giá trị 1, giá trị 2, … hoặc giá trị n.
  • Điều kiện IN trong SQL Server còn được gọi là toán tử IN.

Ví dụ - với giá trị chuỗi

SELECT * 
FROM nhanvien
WHERE ho IN (‘Smith’, ‘Anderson’, ‘Johnson’);

Kết quả trả về sẽ là các hàng từ bảng nhanvien nếu họ của nhân viên là Smith, Anderson hoặc Johnson. Do dùng * trong lệnh SELECT nên tất cả các trường thông tin trong bảng nhanvien sẽ nằm trong bộ kết quả.

Ví dụ trên đây cũng tương tự như lệnh SELECT dưới đây.

SELECT * 
FROM nhanvien
WHERE ho = ‘Smith’
OR ho = ‘Anderson’
OR ho = ‘Johnson’;

Việc dùng điều kiện IN giúp lệnh trông ngắn gọn, dễ hiểu hơn.

Ví dụ - với giá trị số

SELECT * 
FROM nhanvien
WHERE nhanvien_id IN (1, 2, 3, 4, 10);

Kết quả trả về là các nhân viên có ID là 1, 2, 3, 4 hoặc 10. Lệnh trên tương đương lệnh dưới đây.

SELECT * 
FROM nhanvien
WHERE nhanvien_id = 1
OR nhanvien_id = 2
OR nhanvien_id = 3
OR nhanvien_id = 4
OR nhanvien_id = 10;

Ví dụ - dùng toán tử NOT

SELECT * 
FROM nhanvien
WHERE ten NOT IN (‘Sarah’, ‘John’, ‘Dale’);

Ở ví dụ trên, bộ kết quả gồm các hàng từ bảng nhanvien có tên nhân viên không phải là Sarah, John hay Dale. Đôi khi tìm ra giá trị không phải giá trị bạn muốn sẽ dễ dàng hơn. Ví dụ nói trên cũng tương đương lệnh dưới đây.

SELECT * 
FROM nhanvien
WHERE ten <> ‘Sarah’
AND ten <> ‘John’
AND ten <> ‘Dale’;

Bài trước: Mệnh đề DISTINCT trong SQL Server

Bài tiếp: Điều kiện IS NULL trong SQL Server

0