MySQL zawiera FIELD()
funkcja i FIND_IN_SET()
funkcja, która obie zwracają pozycję ciągu na liście. Jednak te funkcje działają nieco inaczej.
Główna różnica między tymi dwiema funkcjami jest następująca:
FIND_IN_SET()
zwraca pozycję indeksu ciągu w liście ciągów.FIELD()
zwraca pozycję indeksu ciągu na liście argumentów.
Więc jedna funkcja przeszukuje listę ciągów , a druga funkcja przeszukuje listę argumentów .
Składnia
Najpierw spójrzmy na składnię dwóch funkcji:
POLE()
Składnia FIELD()
funkcja wygląda tak:
FIELD(str,str1,str2,str3,...)
Składa się z początkowego argumentu, po którym następuje wiele kolejnych argumentów. Przeszukiwane są kolejne argumenty – bez względu na to, ile ich jest.
ZNAJDŹ_W_ZESTAWIE()
Składnia FIND_IN_SET()
funkcja wygląda tak:
FIND_IN_SET(str,strlist)
Składa się z początkowego argumentu, po którym następuje jeszcze jeden argument. Drugi argument zawiera listę ciągów do przeszukania.
Przykłady
POLE()
Oto przykład FIELD()
funkcja w akcji:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+
ZNAJDŹ_W_ZESTAWIE()
A oto jak FIND_IN_SET()
funkcja zostałaby skonstruowana tak, aby uzyskać ten sam wynik:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+