W MariaDB, FIELD()
jest wbudowaną funkcją ciągu, która zwraca pozycję indeksu ciągu lub liczby pasującej do określonego wzorca.
Akceptuje dwa lub więcej argumentów. Pierwszy to wzór, który chcesz wyszukać. Wszystkie kolejne argumenty są ciągami lub liczbami, do których należy dopasować wzorzec.
Składnia
Składnia wygląda tak:
FIELD(pattern, str1[,str2,...])
Gdzie pattern
jest wzorcem, a str1[, str2,…]
reprezentuje ciągi lub liczby.
Przykład
Oto podstawowy przykład:
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
Wynik:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
W tym przypadku wzorzec (Green
) występuje na drugiej pozycji, więc 2
jest zwracany.
Wrażliwość na wielkość liter
FIELD()
funkcja traktuje łańcuchy jako niewrażliwe na wielkość liter.
Przykład:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
Wynik:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
Brak dopasowania
Jeśli nie ma dopasowania, 0
jest zwracany.
Przykład:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
Wynik:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
Liczby
Gdy wszystkie argumenty są liczbami, są traktowane jako liczby. W przeciwnym razie są traktowane jako dublety.
Przykład:
SELECT FIELD(3, 40, 2, 18, 10, 3);
Wynik:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
Wiele meczów
Jeśli istnieje wiele dopasowań wzorca, zwracany jest tylko indeks pierwszego z nich:
SELECT FIELD(3, 40, 3, 18, 10, 3);
Wynik:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
Określanie wzorca zerowego
Podanie null
jako pierwszy argument daje wynik 0
:
SELECT FIELD(null, 1, 2, 3);
Wynik:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
Podawanie tylko jednego argumentu ciągu
Podanie pojedynczego argumentu do dopasowania jest prawidłowe:
SELECT FIELD(205, 205);
Wynik:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
Pojedynczy argument
Ale przekazanie tylko jednego argumentu do FIELD()
zwraca błąd:
SELECT FIELD(205);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
Brakujący argument
Wywołanie FIELD()
bez przekazania żadnych argumentów powoduje błąd:
SELECT FIELD();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'