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.