Tóm tắt :trong hướng dẫn này, bạn sẽ học cách truy vấn dữ liệu dựa trên đối sánh mẫu bằng SQLite LIKE
nhà điều hành.
Giới thiệu về SQLite LIKE
toán tử
Đôi khi, bạn không biết chính xác từ khóa hoàn chỉnh mà bạn muốn truy vấn. Ví dụ:bạn có thể biết rằng bài hát yêu thích nhất của bạn có chứa từ, elevator
nhưng bạn không biết chính xác tên.
Để truy vấn dữ liệu dựa trên một phần thông tin, bạn sử dụng LIKE
toán tử trong WHERE
mệnh đề của SELECT
tuyên bố như sau:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Lưu ý rằng bạn cũng có thể sử dụng LIKE
toán tử trong WHERE
mệnh đề của các câu lệnh khác, chẳng hạn như DELETE
và UPDATE
.
SQLite cung cấp hai ký tự đại diện để xây dựng các mẫu. Chúng là dấu phần trăm %
và gạch dưới _
:
- Dấu phần trăm
%
ký tự đại diện khớp với bất kỳ chuỗi nào không hoặc nhiều ký tự. - Dấu gạch dưới
_
ký tự đại diện khớp với bất kỳ ký tự đơn nào.
Dấu phần trăm %
ví dụ về ký tự đại diện
s%
mẫu sử dụng ký tự đại diện dấu phần trăm (%
) khớp với bất kỳ chuỗi nào bắt đầu bằng s
ví dụ:son
và so
.
%er
mẫu khớp với bất kỳ chuỗi nào kết thúc bằng er
như peter
, clever
, v.v.
Và %per%
mẫu khớp với bất kỳ chuỗi nào có chứa per
chẳng hạn như percent
và peeper
.
Dấu gạch dưới _
ví dụ về ký tự đại diện
h_nt
mẫu phù hợp với hunt
, hint
, v.v. __pple
mẫu khớp với topple
, supple
, tipple
, vân vân.
Lưu ý rằng SQLite LIKE
toán tử không phân biệt chữ hoa chữ thường. Nó có nghĩa là "A" LIKE "a"
là đúng.
Tuy nhiên, đối với các ký tự Unicode không nằm trong dãy ASCII, thì LIKE
toán tử phân biệt chữ hoa chữ thường, ví dụ:"Ä" LIKE "ä"
là sai.
Trong trường hợp bạn muốn tạo LIKE
toán tử hoạt động phân biệt chữ hoa chữ thường, bạn cần sử dụng PRAGMA sau:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
ví dụ
Chúng tôi sẽ sử dụng bảng tracks
trong cơ sở dữ liệu mẫu cho cuộc trình diễn.
Để tìm các bản nhạc có tên bắt đầu bằng Wild
chuỗi chữ, bạn sử dụng dấu phần trăm %
ký tự đại diện ở cuối mẫu.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Để tìm các bản nhạc có tên kết thúc bằng Wild
từ, bạn sử dụng %
ký tự đại diện ở đầu mẫu.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Để tìm các bản nhạc có tên chứa Wild
chuỗi chữ, bạn sử dụng %
ký tự đại diện ở đầu và cuối của mẫu:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
Câu lệnh sau tìm các bản nhạc có tên chứa:không hoặc nhiều ký tự (%
), theo sau là Br
, theo sau là một ký tự (_
), theo sau là wn
và theo sau là không hoặc nhiều ký tự (%
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
SQLite LIKE
với ESCAPE
mệnh đề
Nếu mẫu bạn muốn đối sánh chứa %
hoặc _
, bạn phải sử dụng ký tự thoát trong ESCAPE
tùy chọn mệnh đề như sau:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Khi bạn chỉ định ESCAPE
mệnh đề LIKE
toán tử sẽ đánh giá expression
theo sau ESCAPE
từ khóa đến một chuỗi bao gồm một ký tự đơn hoặc một ký tự thoát.
Sau đó, bạn có thể sử dụng ký tự thoát này trong mẫu để bao gồm dấu phần trăm theo nghĩa đen (%) hoặc dấu gạch dưới (_
). LIKE
toán tử đánh giá dấu phần trăm (%
) hoặc gạch dưới (_
) theo sau ký tự thoát dưới dạng một chuỗi ký tự, không phải ký tự đại diện.
Giả sử bạn muốn đối sánh chuỗi 10%
trong một cột của bảng. Tuy nhiên, SQLite diễn giải biểu tượng phần trăm %
dưới dạng ký tự đại diện. Do đó, bạn cần thoát khỏi ký hiệu phần trăm này %
sử dụng ký tự thoát:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Trong biểu thức này, LIKE
toán tử giải thích các dấu% phần trăm đầu tiên và cuối cùng là các ký tự đại diện và dấu phần trăm thứ hai là một ký hiệu phần trăm theo nghĩa đen.
Lưu ý rằng bạn có thể sử dụng các ký tự khác làm ký tự thoát, ví dụ:/, @, $.
Hãy xem xét ví dụ sau:
Đầu tiên, hãy tạo một bảng t
có một cột:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Tiếp theo, chèn một số hàng vào bảng t
:
INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
Code language: SQL (Structured Query Language) (sql)
Sau đó, truy vấn dữ liệu từ t
bảng:
SELECT * FROM t;
Code language: SQL (Structured Query Language) (sql)
c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next year
Code language: Shell Session (shell)
Thứ tư, cố gắng tìm hàng có giá trị trong c
cột chứa 10%
chuỗi chữ:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Tuy nhiên, nó trả về các hàng có giá trị trong cột c chứa 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Thứ năm, để có kết quả chính xác, bạn sử dụng ESCAPE
như được hiển thị trong truy vấn sau:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Đây là tập hợp kết quả:
c
------------
10% increase
Code language: Shell Session (shell)
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite LIKE
toán tử để truy vấn dữ liệu dựa trên đối sánh mẫu bằng cách sử dụng hai ký tự đại diện dấu phần trăm (%
) và gạch dưới (_
).