Toán tử LIKE trong SQLite
Toán tử LIKE
trong SQLite
được sử dụng để so sánh một giá trị với một mẫu (pattern) bằng cách sử dụng ký tự đại diện (wildcards). Nếu biểu thức tìm kiếm khớp với biểu thức mẫu, toán tử LIKE
sẽ trả về true, là 1. Có hai ký tự đại diện (wildcards) được sử dụng cùng với toán tử LIKE
đó là:
- Dấu phần trăm (%)
- Dấu gạch dưới (_)
Dấu phần trăm (%) dùng để đại diện cho 0, 1 hoặc nhiều ký tự. Dấu gạch dưới (_) dùng để đại diện cho một ký tự đơn.
1. Cú pháp của toán tử Like trong SQLite
Sau đây là cú pháp cơ bản của dấu phần trăm (%) và dấu gạch dưới (_) kết hợp với toán tử LIKE
trong SQLite
.
SELECT FROM table_name WHERE column LIKE 'XXXX%' or SELECT FROM table_name WHERE column LIKE '%XXXX%' or SELECT FROM table_name WHERE column LIKE 'XXXX_' or SELECT FROM table_name WHERE column LIKE '_XXXX' or SELECT FROM table_name WHERE column LIKE '_XXXX_'
Bạn có thể kết hợp N số điều kiện bằng cách sử dụng toán tử AND
hoặc OR
(xem chi tiết tại bài toán tử AND và OR trong SQLite). Ở đây, XXXX
có thể là bất kỳ giá trị số hoặc chuỗi bất kỳ.
Bài viết này được đăng tại [free tuts .net]
2. Ví dụ của toán tử LIKE trong SQLite
Bảng sau sẽ liệt kê một số ví dụ cho thấy sự kết hợp giữa mệnh đề WHERE
, toán tử LIKE
và hai toán tử '%
' và '_
'.
Câu lệnh | Mô tả |
WHERE SALARY LIKE '200%' | Tìm bất kỳ giá trị nào bắt đầu bằng 200 |
WHERE SALARY LIKE '%200%' | Tìm bất kỳ giá trị nào có 200 ở bất kỳ vị trí nào |
WHERE SALARY LIKE '_00%' | Tìm bất kỳ giá trị nào có 00 ở vị trí thứ hai và thứ ba |
WHERE SALARY LIKE '2_%_%' | Tìm bất kỳ giá trị nào bắt đầu bằng 2 và có ít nhất 3 ký tự |
WHERE SALARY LIKE '%2' | Tìm bất kỳ giá trị nào kết thúc bằng 2 |
WHERE SALARY LIKE '_2%3' | Tìm bất kỳ giá trị nào có 2 ở vị trí thứ hai và kết thúc bằng 3 |
WHERE SALARY LIKE '2___3' | Tìm bất kỳ giá trị nào trong một số có năm chữ số bắt đầu bằng 2 và kết thúc bằng 3 |
Giả sử chúng ta có bảng COMPANY
với các bản ghi như sau:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Ví dụ sau đây sẽ hiển thị tất cả các bản ghi từ bảng COMPANY
có age
bắt đầu bằng 2.
sqlite> SELECT * FROM COMPANY WHERE AGE LIKE '2%';
Kết quả của ví dụ trên như sau:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Ví dụ sau đây sẽ hiển thị tất cả các bản ghi từ bảng COMPANY
trong đó giá trị của address
có dấu gạch nối (-) bên trong giá trị.
sqlite> SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
Sau đây là kết quả của ví dụ trên:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 6 Kim 22 South-Hall 45000.0