SQLite - Mệnh đề GLOB
SQLite GLOBtoán tử được sử dụng để chỉ đối sánh các giá trị văn bản với một mẫu sử dụng ký tự đại diện. Nếu biểu thức tìm kiếm có thể được so khớp với biểu thức mẫu, toán tử GLOB sẽ trả về true, là 1. Không giống như toán tử LIKE, GLOB phân biệt chữ hoa chữ thường và nó tuân theo cú pháp của UNIX để chỉ định các ký tự đại diện sau.
- Dấu hoa thị (*)
- Dấu chấm hỏi (?)
Dấu hoa thị (*) biểu thị số không hoặc nhiều số hoặc ký tự. Dấu chấm hỏi (?) Đại diện cho một số hoặc một ký tự.
Cú pháp
Sau đây là cú pháp cơ bản của * và ?.
SELECT FROM table_name
WHERE column GLOB 'XXXX*'
or
SELECT FROM table_name
WHERE column GLOB '*XXXX*'
or
SELECT FROM table_name
WHERE column GLOB 'XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '????'
Bạn có thể kết hợp Nsố lượng điều kiện sử dụng toán tử AND hoặc OR. Ở đây, XXXX có thể là bất kỳ giá trị số hoặc chuỗi nào.
Thí dụ
Bảng sau liệt kê một số ví dụ cho thấy phần WHERE có mệnh đề LIKE khác với '*' và '?' các toán tử.
Sr.No. | Tuyên bố & Mô tả |
---|---|
1 | WHERE SALARY GLOB '200*' Tìm bất kỳ giá trị nào bắt đầu bằng 200 |
2 | WHERE SALARY GLOB '*200*' Tìm bất kỳ giá trị nào có 200 ở bất kỳ vị trí nào |
3 | WHERE SALARY GLOB '?00*' Tìm bất kỳ giá trị nào có 00 ở vị trí thứ hai và thứ ba |
4 | WHERE SALARY GLOB '2??' Tìm bất kỳ giá trị nào bắt đầu bằng 2 và có độ dài ít nhất 3 ký tự |
5 | WHERE SALARY GLOB '*2' Tìm bất kỳ giá trị nào kết thúc bằng 2 |
6 | WHERE SALARY GLOB '?2*3' Tìm bất kỳ giá trị nào có số 2 ở vị trí thứ hai và kết thúc bằng số 3 |
7 | WHERE SALARY GLOB '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 |
Hãy để chúng tôi lấy một ví dụ thực tế, hãy xem xét bảng COMPANY với các bản ghi 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
Sau đây là một ví dụ, sẽ hiển thị tất cả các bản ghi từ bảng COMPANY, trong đó AGE bắt đầu bằng 2.
sqlite> SELECT * FROM COMPANY WHERE AGE GLOB '2*';
Điều này sẽ tạo ra kết quả 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
Sau đây là một ví dụ, sẽ hiển thị tất cả các bản ghi từ bảng COMPANY trong đó ADDRESS sẽ có dấu gạch ngang (-) bên trong văn bản -
sqlite> SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*';
Điều này sẽ tạo ra kết quả sau.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
6 Kim 22 South-Hall 45000.0