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

Cách LOCATE () hoạt động trong MariaDB

Trong MariaDB, LOCATE() là một hàm chuỗi tích hợp trả về vị trí của lần xuất hiện đầu tiên của một chuỗi con trong một chuỗi khác.

LOCATE() tương tự với INSTR() , ngoại trừ LOCATE() đó cung cấp tùy chọn chỉ định vị trí bắt đầu cho tìm kiếm. Ngoài ra, thứ tự đối số được đảo ngược giữa hai hàm này.

Cú pháp

LOCATE() hàm hỗ trợ cú pháp hai đối số và cú pháp ba đối số.

Cú pháp hai đối số:

 LOCATE(substr,str) 

Cú pháp ba đối số:

 LOCATE(substr,str,pos) 

Ở đâu str là chuỗi, substr là chuỗi con cần tìm và pos là vị trí để bắt đầu tìm kiếm.

Ví dụ

Đây là một ví dụ cơ bản:

 SELECT LOCATE('hot', 'The hot sun'); 

Kết quả:

 + ------------------------------ + | ĐỊA ĐIỂM ('nóng', 'Nắng nóng') | + ------------------------------ + | 5 | + ------------------------------ + 

Vị trí bắt đầu

Dưới đây là một ví dụ về việc cung cấp vị trí bắt đầu cho tìm kiếm:

 SELECT LOCATE('hot', 'The hot sun is really hot', 8); 

Kết quả:

 + ---------------------------------------------- - + | ĐỊA ĐIỂM ('nóng', 'Trời nắng gắt', 8) | + ------------------------------- ----------------- + | 23 | + ----------------------------------------------- - + 

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

LOCATE() thực hiện tìm kiếm không phân biệt chữ hoa chữ thường:

 SELECT LOCATE('HOT', 'The hot sun'); 

Kết quả:

 + ------------------------------ + | ĐỊA ĐIỂM ('HOT', 'The hot sun') | + ------------------------------ + | 5 | + ------------------------------ + 

Nhiều lần xuất hiện

Nếu chuỗi con xảy ra nhiều lần, chỉ vị trí của chuỗi đầu tiên (từ vị trí bắt đầu) được trả về:

 SELECT LOCATE('hot', 'The hot sun is really hot'); 

Kết quả:

 + -------------------------------------------- + | ĐỊA ĐIỂM ('nóng', 'Trời nắng nóng thật là nóng') | + --------------------------------- ----------- + | 5 | + -------------------------------------------- +  

Đây là vị trí bắt đầu:

 SELECT LOCATE('hot', 'The hot sun is really hot', 20); 

Kết quả:

 + ---------------------------------------------- - + | ĐỊA ĐIỂM ('nóng', 'Trời nắng gắt', 20) | + ------------------------------- ----------------- + | 23 | + ----------------------------------------------- - + 

Khớp một phần

Nếu chuỗi con là một phần của một từ lớn hơn, thì nó vẫn là một kết quả khớp:

 SELECT LOCATE('hot', 'The hottest sun'); 

Kết quả:

 + ---------------------------------- + | ĐỊA ĐIỂM ('nóng', 'Mặt trời nóng nhất') | + ---------------------------------- + | 5 | + ---------------------------------- + 

Nhưng nếu chuỗi chỉ là một phần của chuỗi con, thì đó không phải là một chuỗi khớp:

 SELECT LOCATE('hottest', 'The hot sun'); 

Kết quả:

 + ---------------------------------- + | ĐỊA ĐIỂM ('nóng nhất', 'Nắng nóng') | + ---------------------------------- + | 0 | + ---------------------------------- + 

Dấu cách

Ký tự khoảng trắng vẫn là một chuỗi, vì vậy chúng tôi có thể bao gồm khoảng trắng trong chuỗi con, ngay cả khi đó là ký tự duy nhất:

 SELECT LOCATE(' ', 'The hot sun'); 

Kết quả:

 + ---------------------------- + | VỊ TRÍ ('', 'Nắng nóng') | + ---------------------------- + | 4 | + ---------------------------- + 

Chuỗi trống

Dưới đây là những gì sẽ xảy ra khi chuỗi con là một chuỗi rỗng:

 SELECT LOCATE(' ', 'The hot sun'); 

Kết quả:

 + --------------------------- + | ĐỊA ĐIỂM ('', 'Nắng nóng') | + --------------------------- + | 1 | + --------------------------- + 

Không phù hợp

Nếu không tìm thấy chuỗi con trong chuỗi, hãy LOCATE() trả về 0 :

 SELECT LOCATE('cold', 'The hot sun'); 

Kết quả:

 + ------------------------------- + | ĐỊA ĐIỂM ('lạnh', 'Nắng nóng') | + ------------------------------- + | 0 | + ------------------------------- + 

Đối số rỗng

Cung cấp null đối với bất kỳ đối số nào dẫn đến null :

 SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null); 

Kết quả:

 + ----------------------------- + ---------------- ----- + | ĐỊA ĐIỂM (null, 'The hot sun') | VỊ TRÍ ('hot', null) | + ----------------------------- + ---------- ----------- + | NULL | NULL | + ----------------------------- + ----------------- ---- + 

Cung cấp số lượng lập luận sai

Đang gọi LOCATE() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:

 SELECT LOCATE('hot'); 

Kết quả:

 ERROR 1582 (42000):Số lượng tham số không chính xác trong lệnh gọi hàm gốc 'LOCATE' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách bảo vệ cơ sở dữ liệu MySQL hoặc MariaDB của bạn khỏi SQL Injection:Phần thứ hai

  2. Các bước cần thực hiện nếu bạn gặp sự cố MySQL

  3. Chạy Vitess và MySQL với ClusterControl

  4. Cách DATE_ADD () hoạt động trong MariaDB

  5. Lập kế hoạch khôi phục thảm họa cho MySQL &MariaDB