SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite LIKE

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ư DELETEUPDATE .

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 _ :

  1. 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ự.
  2. 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ụ:sonso .

%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.

%per% mẫu khớp với bất kỳ chuỗi nào có chứa per chẳng hạn như percentpeeper .

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 yearCode 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% increaseCode 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 (_ ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất cơ sở dữ liệu hoặc bất kỳ tệp nào khác từ Bộ nhớ trong bằng run-as

  2. Android ListView:làm thế nào để tránh truy vấn cơ sở dữ liệu trong bindView ()? Cần tìm nạp một đến nhiều dữ liệu mối quan hệ

  3. 2 cách để trở lại ngày Julian trong SQLite

  4. 2 cách để kích hoạt Word Wrap trong SQLite

  5. SQLite JSON_GROUP_ARRAY ()