W MySQL możesz użyć FIELD() funkcja zwracająca pozycję danego ciągu lub liczby na liście argumentów. Funkcja zwraca indeks (pozycję) pierwszego argumentu na liście kolejnych argumentów.
Składnia wygląda tak:
FIELD(str,str1,str2,str3,...)
Gdzie str to element, który chcesz znaleźć, a str1,str2,str3,... to lista, którą przeszukujesz.
Oto przykład:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?'; Wynik:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
W tym przykładzie lista to:'Marge', 'Homer', 'Bart' i szukamy ciągu Homer na tej liście. A ponieważ Homer jest drugą pozycją na liście argumentów, wynikiem jest 2 .
Dopasowanie ścisłe
Pamiętaj, że musi to być dokładne dopasowanie, w przeciwnym razie zwróci 0 .
Na przykład, jeśli upuścimy r od Homer , w końcu szukamy Home zamiast tego:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?'; Wynik:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
W tym przypadku, mimo że Homer zawiera Home , nie jest to dokładne dopasowanie, a wynik to 0 .
Liczby
FIELD() funkcja działa również z liczbami:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Wynik:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Kiedy wszystkie argumenty FIELD() są liczbami, wszystkie argumenty są porównywane jako liczby. Jeśli wszystkie są ciągami, są porównywane jako ciągi. Jeśli są pomieszane, są porównywane jako podwójne.
FIELD() funkcja jest uzupełnieniem ELT() funkcja, która pozwala znaleźć pozycję na liście według jej pozycji na liście.
Zobacz też Jak zwrócić pozycję elementu listy za pomocą FIND_IN_SET() funkcja.