Trong MySQL, POSITION()
hàm trả về vị trí của lần xuất hiện đầu tiên của một chuỗi con trong chuỗi.
Hàm này thực sự là một từ đồng nghĩa với LOCATE()
, nhưng với một cú pháp hơi khác. LOCATE()
chức năng cũng có chức năng bổ sung, trong đó nó cho phép bạn xác định vị trí bắt đầu cho tìm kiếm của bạn.
Cú pháp
Cú pháp cơ bản như sau:
POSITION(substr IN str)
Ở đâu substr
là chuỗi con và str
là chuỗi.
Ví dụ 1 - Cách sử dụng cơ bản
Kết quảSELECT POSITION('Cat' IN 'The Cat') Result;
Kết quả:
+--------+ | Result | +--------+ | 5 | +--------+
Ví dụ 2 - Phân biệt chữ hoa chữ thường
POSITION()
hàm là multibyte an toàn và chỉ phân biệt chữ hoa chữ thường nếu ít nhất một đối số là chuỗi nhị phân.
Vì vậy, ví dụ sau không phân biệt chữ hoa chữ thường:
SELECT POSITION('Cat' IN 'The cat') Result;
Kết quả:
+--------+ | Result | +--------+ | 5 | +--------+
Ví dụ 3 - Không phù hợp
Hàm trả về 0
nếu chuỗi con không được tìm thấy trong chuỗi:
SELECT POSITION('Dog' IN 'The cat') Result;
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Ví dụ 4 - Chuỗi con được nhúng
Hãy cẩn thận khi chọn chuỗi con. Nếu nó là một phần của một từ khác, bạn có thể nhận được một dương tính giả:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Kết quả:
+--------+ | Result | +--------+ | 6 | +--------+
Nếu bạn chỉ tìm kiếm con mèo , động vật, đây sẽ là một dương tính giả.
Ví dụ 5 - Chỉ xuất hiện lần đầu
Hãy nhớ rằng, hàm này chỉ trả về vị trí của đầu tiên sự xuất hiện của chuỗi con. Mọi lần xuất hiện tiếp theo đều bị bỏ qua:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Kết quả:
+--------+ | Result | +--------+ | 4 | +--------+
Ví dụ 6 - Đối số NULL
Nếu bất kỳ đối số nào là NULL
, kết quả là NULL
:
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Kết quả:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
Như đã đề cập, bạn cũng có thể sử dụng LOCATE()
, cho phép bạn xác định vị trí bắt đầu cho tìm kiếm của mình.