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ừ str
và substr
đượ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 | +--------+