Trong MySQL, bạn có thể sử dụng FIELD()
hàm để trả về vị trí của một chuỗi hoặc số đã cho trong danh sách các đối số. Hàm trả về chỉ số (vị trí) của đối số đầu tiên trong danh sách các đối số tiếp theo.
Cú pháp như sau:
FIELD(str,str1,str2,str3,...)
Ở đâu str
là mục bạn muốn tìm và str1,str2,str3,...
là danh sách bạn đang tìm kiếm.
Đây là một ví dụ:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Kết quả:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
Trong ví dụ này, danh sách là:'Marge', 'Homer', 'Bart'
và chúng tôi đang tìm kiếm chuỗi Homer
trong danh sách đó. Và bởi vì Homer
là mục thứ 2 trong danh sách các đối số, kết quả là 2
.
Kết hợp Chính xác
Lưu ý rằng nó phải là một đối sánh chính xác, nếu không nó sẽ trả về 0
.
Ví dụ:nếu chúng ta thả r
từ Homer
, chúng tôi kết thúc tìm kiếm Home
thay vào đó:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Kết quả:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
Trong trường hợp này, mặc dù Homer
chứa Home
, nó không phải là một đối sánh chính xác và kết quả là 0
.
Số
FIELD()
hàm cũng hoạt động với các số:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Kết quả:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Khi tất cả các đối số cho FIELD()
là số, tất cả các đối số được so sánh dưới dạng số. Nếu tất cả đều là chuỗi, chúng được so sánh dưới dạng chuỗi. Nếu chúng là hỗn hợp, chúng sẽ được so sánh như gấp đôi.
FIELD()
hàm là phần bổ sung cho ELT()
, cho phép bạn tìm một mục danh sách theo vị trí của nó trong danh sách.
Ngoài ra, hãy xem Cách trả lại vị trí của một mục trong danh sách bằng cách sử dụng FIND_IN_SET()
chức năng.