Trong MySQL, bạn có thể sử dụng FIND_IN_SET()
hàm để trả về chỉ mục của một mục danh sách nhất định trong danh sách chuỗi (ví dụ:‘item1, item2, item3,…’).
Hàm nhận hai đối số; chuỗi cần tìm và danh sách để tìm kiếm.
Cú pháp như sau:
FIND_IN_SET(str,strlist)
Ở đâu str
là chuỗi bạn đang tìm kiếm và strlist
là danh sách chuỗi để tìm kiếm.
Ví dụ
Đây là một ví dụ:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 2 | +--------+
Điều này trả về 2
bởi vì đó là vị trí của chuỗi Dog
trong danh sách chuỗi.
Lưu ý rằng chỉ chỉ mục của lần xuất hiện đầu tiên được trả về. Vì vậy, nếu có một sự xuất hiện khác của Dog
sau lần đầu tiên đó, chúng tôi vẫn sẽ nhận được kết quả tương tự:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 2 | +--------+
Không có Kết quả phù hợp nào
Khi không tìm thấy chuỗi, kết quả là 0
được trả lại:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Điều gì sẽ xảy ra nếu Đối số đầu tiên chứa Dấu phẩy?
Hàm sẽ không trả về kết quả dương nếu đối số đầu tiên chứa dấu phẩy.
Đây là một ví dụ:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Trong ví dụ này, người ta có thể mong đợi nó trả về một kết quả dương tính (đã cho Cat,Dog
thực sự có trong danh sách), tuy nhiên, dấu phẩy được sử dụng làm dấu phân tách trong danh sách và do đó, đối sánh chuỗi không hoạt động.
Ngoài ra, hãy xem Cách trả lại vị trí của đối số trong danh sách đối số bằng cách sử dụng FIELD()
chức năng.