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

Hàm Like () trong SQLite với các ví dụ

SQLite like() hàm cho phép bạn so sánh một chuỗi với một mẫu nhất định. Bạn cũng có thể chỉ định một ký tự thoát nếu được yêu cầu.

Bạn có thể sử dụng like() hoạt động như một sự thay thế cho LIKE toán tử (cho phép bạn chạy Y LIKE X [ESCAPE Z] biểu thức).

Cú pháp

Bạn có thể sử dụng một trong các cách sau:

like(X,Y)
like(X,Y,Z)
  • X là khuôn mẫu
  • Y là chuỗi
  • Z là một ký tự thoát tùy chọn

Ví dụ cơ bản

Lấy bảng sau:

CatId       CatName   
----------  ----------
1           Brush     
2           Flutter   
3           100%Fluff 
4           100$Fluff 

Chúng tôi có thể chạy mã sau để trả về tất cả các hàng có tên con mèo bắt đầu bằng chữ F:

SELECT * FROM Cats 
WHERE like('F%', CatName);

Kết quả:

CatId       CatName   
----------  ----------
3           Flutter   

Trong ví dụ này, tôi đã sử dụng % ký tự đại diện để biểu thị bất kỳ số ký tự nào có thể theo sau (bao gồm cả ký tự không) và chúng có thể là bất kỳ ký tự nào.

Ký tự gạch dưới (_)

Dưới đây là một ví dụ sử dụng dấu gạch dưới (_ ) tính cách. Ký tự đại diện này khớp chính xác với một ký tự - không hơn, không kém.

SELECT * FROM Cats 
WHERE like('Br_sh', CatName);

Kết quả:

CatId       CatName   
----------  ----------
1           Brush     

Như đã đề cập, nó chỉ khớp với một ký tự duy nhất. Vì vậy, dựa trên dữ liệu của tôi, tôi không thể thực hiện những điều sau và mong đợi bất kỳ kết quả phù hợp nào.

SELECT * FROM Cats 
WHERE like('Br_', CatName);

Kết quả:

 

(Phần này cố ý để trống do không có kết quả).

Nhân vật đang chạy trốn

Bạn cũng có thể thoát các ký tự nếu được yêu cầu. Để thực hiện việc này, hãy thêm ký tự thoát làm tham số thứ ba (và cũng thêm ký tự này trước ký tự mà bạn muốn thoát).

SELECT * FROM Cats 
WHERE like('100\%F%', CatName, '\');

Kết quả:

CatId       CatName   
----------  ----------
3           100%Fluff 

Trong trường hợp này, tôi đã thoát khỏi dấu phần trăm (% ). Tôi đã làm điều này bởi vì tôi đang tìm kiếm những con mèo có ký hiệu tỷ lệ phần trăm thực tế trong tên của chúng. Trên thực tế, trong trường hợp này, tôi đang tìm kiếm một tên mèo rất cụ thể - tên bắt đầu bằng 100% F .

Nếu tôi không thoát khỏi điều đó, nó sẽ được sử dụng làm ký tự đại diện và kết quả sẽ khác.

Đây là những gì tôi nhận được khi xóa ký tự thoát.

SELECT * FROM Cats 
WHERE like('100%F%', CatName);

Kết quả:

CatId       CatName   
----------  ----------
3           100%Fluff 
4           100$Fluff 

Trả về giá trị Boolean

Bạn có thể sử dụng like() hàm trả về 0 hoặc 1 , tùy thuộc vào việc có trùng khớp hay không.

Điều này có thể hữu ích nếu bạn cần trả lại tất cả các hàng, nhưng cũng có cờ cho biết liệu chúng có phù hợp với tiêu chí của bạn hay không.

Đây là một ví dụ.

SELECT 
  CatName,
  like('F%', CatName) 
FROM Cats;

Kết quả:

CatName     CatName LIKE 'F%'
----------  ------------------
Brush       0                 
Flutter     1                 
100%Fluff   0                 
100$Fluff   0                 

Trong trường hợp này, chỉ một hàng phù hợp với tiêu chí, nhưng chúng tôi vẫn phải xem tất cả các hàng khác.

Phân biệt chữ hoa chữ thường

Theo mặc định, SQLite like() hàm không phân biệt chữ hoa chữ thường đối với các ký tự ASCII. Điều này có nghĩa là nó sẽ khớp với các ký tự viết hoa và viết thường, bất kể bạn sử dụng kiểu chữ nào trong mẫu của mình.

Bạn có thể sử dụng case_sensitive_like Câu lệnh PRAGMA để thực hiện đối sánh phân biệt chữ hoa chữ thường trong phạm vi ASCII.

Xem Cách phân biệt chữ hoa chữ thường với toán tử LIKE của SQLite để biết ví dụ. Bài báo đó được viết cho LIKE nhưng nó cũng áp dụng cho like() chức năng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi không thể đặt nhiều hình ảnh trong chế độ xem lưới?

  2. Làm cách nào để thêm số hàng trống cụ thể trong sqlite?

  3. Tôi có nên tạo một lớp kế thừa SQLiteOpenHelper cho mỗi bảng trong cơ sở dữ liệu của mình không?

  4. Làm thế nào ON CONFLICT hoạt động trong SQLite

  5. Phương thức onUpgrade có bao giờ được gọi không?