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

3 cách để tìm vị trí của một chuỗi con trong một chuỗi trong MySQL

MySQL có một số hàm chuỗi trả về vị trí của một chuỗi con trong một chuỗi. Cụ thể hơn, chúng trả về vị trí của lần xuất hiện đầu tiên trong chuỗi (hoặc lần xuất hiện đầu tiên sau một điểm bắt đầu nhất định).

Các chức năng tôi đang đề cập đến như sau:

  • INSTR()
  • LOCATE()
  • POSITION()

Dưới đây là tổng quan về từng cái.

INSTR ()

INSTR() hàm trả về lần xuất hiện đầu tiên của một chuỗi con trong một chuỗi.

Đây là cú pháp:

INSTR(str,substr)

Ở đâu str là chuỗi bạn muốn tìm kiếm và substr là chuỗi con mà bạn đang tìm kiếm.

Ví dụ

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Kết quả:

+--------+
| Result |
+--------+
|     10 |
+--------+

Trong trường hợp này, chuỗi dogs bắt đầu ở vị trí 10.

Nếu không tìm thấy chuỗi con, kết quả là 0 được trả lại:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Kết quả:

+--------+
| Result |
+--------+
|      0 |
+--------+

VỊ TRÍ ()

LOCATE() chức năng hoạt động theo cách tương tự, ngoại trừ một số khác biệt; các đối số theo thứ tự khác và bạn có thể cung cấp tham số thứ ba tùy chọn để chỉ ra nơi bắt đầu tìm kiếm.

Do đó, bạn có thể sử dụng nó theo một trong những cách sau:

LOCATE(substr,str)
LOCATE(substr,str,pos)

Cú pháp đầu tiên giống như INTSR() cú pháp, ngoại trừ strsubstr được đổi chỗ cho nhau.

Cú pháp thứ hai thêm pos tùy chọn đối số, cho phép bạn chỉ định một vị trí để bắt đầu tìm kiếm.

Ví dụ về cú pháp đầu tiên

Dưới đây là một ví dụ sử dụng cú pháp đầu tiên:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Kết quả:

+--------+
| Result |
+--------+
|     10 |
+--------+

Ví dụ về cú pháp thứ hai

Dưới đây là một ví dụ mà chúng tôi chỉ định một vị trí bắt đầu để bắt đầu tìm kiếm:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Kết quả:

+--------+
| Result |
+--------+
|      7 |
+--------+

Chúng ta có thể thấy rằng chuỗi cat có thể được tìm thấy ở vị trí 1, nhưng chúng tôi đã chỉ định 6 như vị trí bắt đầu. Do đó, vị trí của lần xuất hiện tiếp theo của chuỗi đó là vị trí đã được trả về.

Như với INSTR() hàm, nếu không tìm thấy chuỗi con, 0 được trả lại.

VỊ TRÍ ()

POSITION() hàm là một từ đồng nghĩa với LOCATE() , nhưng với một cú pháp hơi khác.

Đây là cú pháp:

POSITION(substr IN str)

Đây là từ đồng nghĩa với những từ sau:

LOCATE(substr,str)

Vì vậy, chúng tôi có thể viết lại một trong các ví dụ trước như sau:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Kết quả:

+--------+
| Result |
+--------+
|     10 |
+--------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ MySQL trên Azure, Dịch vụ cơ sở dữ liệu đám mây được quản lý hoàn toàn ra mắt tại ScaleGrid

  2. Khắc phục sự cố:Lỗi MySQL / MariaDB # 1044 &# 1045 Quyền truy cập bị Từ chối cho Người dùng

  3. JDBC so với Dịch vụ web dành cho Android

  4. MySQL tham gia truy vấn bằng cách sử dụng như thế nào?

  5. Khám phá MySQL Binlog Server - Ripple