Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL Server

Điều kiện LIKE trong SQL Server

Điều kiện LIKE trong SQL Server (Transact-SQL) cho phép sử dụng ký tự đại diện (wildcard) trong mệnh đề WHERE của các câu lệnh SELECT, INSERT, UPDATE và DELETE, dùng để so khớp mẫu (pattern matching).

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

'bieu_thuc' LIKE 'mau' [ ESCAPE 'Ky_Tu_Escape' ]

Tham số

bieu_thuc: Biểu thức ký tự như cột hoặc trường thông tin.

mau: Mẫu ký tự chứa các ký tự đại diện. Mẫu có thể chọn từ bảng dưới.

Ký tự đại diệnGiải thích
%Tìm chuỗi ký tự bất kỳ độ dài (kể cả độ dài 0)
_Tìm đúng 1 ký tự
[]Tìm bất kỳ ký tự nào nằm trong cặp ngoặc (ví dụ [abc] tìm a, b hoặc c)
[^]Tìm bất kỳ ký tự nào KHÔNG nằm trong cặp ngoặc (ví dụ [^abc] tìm ký tự không phải a, b, c)

Ky_Tu_Escape

Tùy chọn. Ký tự thoát (escape character), cho phép bạn kiểm tra xem các ký tự như % hoặc _ có được dùng theo nghĩa đen (hằng số), không phải ký tự đặc biệt.

Ví dụ – sử dụng wildcard %

Dùng ký tự đại diện % trong điều kiện LIKE của SQL Server, ví dụ tìm nhân viên có họ bắt đầu bằng chữ 'B':

SELECT *
FROM nhanvien
WHERE ho LIKE 'B%';

Bạn có thể dùng ký tự % ở giữa chuỗi như ví dụ dưới.

SELECT *
FROM nhanvien
WHERE ho LIKE '%o%';

Kết quả cho các nhân viên mà họ chứa chữ 'o'.

Ví dụ – sử dụng wildcard _

Lưu ý ký tự _ chỉ dùng để tìm 1 ký tự (độ dài là 1).

SELECT *
FROM nhanvien
WHERE ho LIKE 'Ad_m';

Trong ví dụ này, kết quả trả về nhân viên có họ 4 chữ cái, 2 chữ cái đầu là 'Ad' và chữ cái cuối là 'm'. Ví dụ: Adam, Adem, Adim, Adom.

Ví dụ khác:

SELECT *
FROM nhanvien
WHERE so_nhanvien LIKE '123_';

Bạn tìm số nhân viên chỉ biết 3 trong 4 chữ số. Kết quả trả về bao gồm 10 giá trị, chữ số cuối từ 0 đến 9: 1230, 1231, 1232 …

Ví dụ – sử dụng wildcard []

Lưu ý ký tự trong ngoặc vuông là ký tự bạn muốn khớp với mẫu.

SELECT *
FROM nhanvien
WHERE ten LIKE 'Sm[iy]th';

Kết quả trả về nhân viên có tên 5 chữ cái, 2 chữ đầu 'Sm', 2 chữ cuối 'th', chữ giữa là 'i' hoặc 'y'. Kết quả có thể là Smith hoặc Smyth.

Ví dụ – sử dụng wildcard [^]

Ký tự trong ngoặc vuông là các ký tự bạn không muốn khớp với mẫu.

SELECT *
FROM nhanvien
WHERE ten LIKE 'Smy[^iy]th';

Kết quả: tên nhân viên 5 chữ cái, 2 chữ đầu 'Sm', 2 chữ cuối 'th', chữ giữa không phải 'i' cũng không phải 'y'. Kết quả có thể là Smath, Smeth …

Ví dụ – sử dụng toán tử NOT

Cách dùng toán tử NOT trong SQL Server với wildcard. Bạn có thể tìm họ nhân viên không bắt đầu bằng chữ 'B' với điều kiện LIKE.

SELECT *
FROM nhanvien
WHERE ho NOT LIKE 'B%';

Bằng cách đặt toán tử NOT trước điều kiện LIKE, bạn tìm họ nhân viên không bắt đầu bằng 'B'.

Ví dụ – sử dụng ký tự thoát Escape Character

Việc dùng ký tự thoát quan trọng khi so khớp mẫu, để tránh hiểu nhầm ký tự đặc biệt khi bạn muốn dùng nó như hằng số.

Ví dụ, nếu bạn muốn tìm chuỗi a% hoặc a_.

Lưu ý ký tự thoát chỉ được định nghĩa bởi 1 ký tự (độ dài 1).

SELECT *
FROM nhanvien
WHERE secret_hint LIKE '123!%455' ESCAPE '!';

Lệnh này sẽ trả về nhân viên có secret_hint là 123%455. Ký tự % không còn mang ý nghĩa đại diện mà là ký tự thường.

Ví dụ phức tạp hơn:

SELECT *
FROM nhanvien
WHERE secret_hint LIKE 'H%!%' ESCAPE '!';

Kết quả điều kiện LIKE là nhân viên có secret_hint bắt đầu bằng 'H' và kết thúc bằng '%', ví dụ 'Help%'.

Bạn có thể dùng ký tự thoát với ký tự _ trong điều kiện LIKE.

SELECT *
FROM nhanvien
WHERE secret_hint LIKE 'H%!_' ESCAPE '!';

Ví dụ này trả về nhân viên có secret_hint bắt đầu bằng 'H' và kết thúc bằng '_', ví dụ 'Help_'.