Lệnh LIKE trong SQL

18

Trong SQL, lệnh LIKE được sử dụng để so sánh một giá trị với các giá trị tương tự bởi sử dụng các toán tử đại diện (wildcard). Có hai ký tự đại diện được sử dụng kết hợp với LIKE:

  • Phần trăm (%)
  • Dấu gạch dưới (_)

Dấu phần trăm thể đại diện cho chuỗi kí tự với bất kì độ dài nào (bao gồm cả độ dài 0). Dấu gạch dưới đại diện cho một số hoặc một ký tự. Những ký hiệu này có thể được sử dụng kết hợp.

Cú pháp lệnh LIKE trong SQL

Cú pháp cơ bản của lệnh LIKE với ‘%’ và ‘_’ là như sau:

SELECT FROM ten_bang
WHERE cot LIKE 'XXXX%'

or

SELECT FROM ten_bang
WHERE cot LIKE '%XXXX%'

or

SELECT FROM ten_bang
WHERE cot LIKE 'XXXX_'

or
SELECT FROM ten_bang
WHERE cot LIKE '_XXXX'

or

SELECT FROM ten_bang
WHERE cot LIKE '_XXXX_'

Bạn có thể kết hợp N điều kiện bằng cách sử dụng các toán tử AND hoặc OR. Ở đây, XXXX có thể là bất kỳ giá trị số hay chuỗi nào.

Ví dụ về LIKE trong SQL

Bảng dưới đây có một vài ví dụ cho thấy mệnh đề WHERE có mệnh đề LIKE với toán tử ‘%’ và ‘_’ khác nhau:

STTCâu lệnh và mô tả
1WHERE SALARY LIKE ‘200%’
Tìm tất cả các giá trị bắt đầu bằng 200.
2WHERE SALARY LIKE ‘%200%’
Tìm tất cả các giá trị có 200 vị trí bất kỳ.
3WHERE SALARY LIKE ‘_00%’
Tìm tất cả các giá trị có 00 ở vị trí thứ hai và thứ ba.
4WHERE SALARY LIKE ‘2_%_%’
Tìm tất cả các giá trị bắt đầu bằng 2 và có ít nhất 3 ký tự.
5WHERE SALARY LIKE ‘%2’
Tìm tất cả các giá trị kết thúc bằng 2.
6WHERE SALARY LIKE ‘_2%3’
Tìm tất cả các giá trị có vị trí 2 ở vị trí thứ hai và kết thúc bằng 3.
7WHERE SALARY LIKE ‘2___3’
Tìm tất cả các giá trị trong số năm chữ số bắt đầu bằng 2 và kết thúc bằng 3.

Chúng ta hãy lấy một ví dụ thực tế, xem xét bảng NHANVIEN có các bản ghi như dưới đây.

  +----+----------+-----+-----------+----------+
| ID | TEN |TUOI | DIACHI | LUONG |
+----+----------+-----+-----------+----------+
| 1 | Thanh | 32 | Haiphong | 2000.00 |
| 2 | Loan | 25 | Hanoi | 1500.00 |
| 3 | Nga | 23 | Hanam | 2000.00 |
| 4 | Manh | 25 | Hue | 6500.00 |
| 5 | Huy | 27 | Hatinh | 8500.00 |
| 6 | Cao | 22 | HCM | 4500.00 |
| 7 | Lam | 24 | Hanoi | 10000.00 |
+----+----------+-----+-----------+----------+

Ví dụ hiển thị tất cả các bản ghi từ bảng NHANVIEN mà LUONG bắt đầu bằng 200, ta thực hiện như sau:

SQL> SELECT * FROM NHANVIEN
WHERE LUONG LIKE ‘200%’;

Kết quả trả về hiển thị là:

  +----+----------+-----+-----------+----------+
| ID | TEN |TUOI | DIACHI | LUONG |
+----+----------+-----+-----------+----------+
| 1 | Thanh | 32 | Haiphong | 2000.00 |
| 3 | Nga | 23 | Hanam | 2000.00 |
+----+----------+-----+-----------+----------+

(Nguồn: quantrimang.com)