W MariaDB, FIND_IN_SET()
jest wbudowaną funkcją ciągów znaków, która zwraca pozycję indeksu, w której dany wzorzec występuje na określonej liście ciągów.
Przyjmuje dwa argumenty. Pierwszy to wzór, który chcesz wyszukać. Drugim argumentem jest łańcuch zawierający wartości oddzielone przecinkami, dla których należy dopasować wzorzec.
Składnia
Składnia wygląda tak:
FIND_IN_SET(pattern, strlist)
Gdzie pattern
to wzorzec, który chcesz wyszukać, a strlist
reprezentuje ciąg wartości oddzielonych przecinkami do przeszukania.
Przykład
Oto podstawowy przykład:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Wynik:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
W tym przypadku wzorzec (Green
) występuje na drugiej pozycji, więc 2
jest zwracany.
Brak dopasowania
Jeśli nie ma dopasowania, 0
jest zwracany.
Przykład:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Wynik:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Wiele meczów
Jeśli istnieje wiele dopasowań, zwracany jest tylko indeks pierwszego z nich:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Wynik:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Określanie wzorca zerowego
Podanie null
jako pierwszy argument daje wynik null
zwracany:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Wynik:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Określanie listy ciągów zerowych
Podanie null
jako drugi argument powoduje również null
:
SELECT FIND_IN_SET('Dog', null);
Wynik:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Pusta lista ciągów
Jeśli lista ciągów jest pusta, FIND_IN_SET()
zwraca 0
:
SELECT FIND_IN_SET('Dog', '');
Wynik:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Przecinek we wzorcu
FIND_IN_SET()
nie zwraca prawidłowego wyniku, jeśli wzorzec zawiera przecinek:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Wynik:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Pojedynczy argument
Przekazywanie tylko jednego argumentu do FIND_IN_SET()
zwraca błąd:
SELECT FIND_IN_SET('Cat');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Brakujący argument
Wywołanie FIND_IN_SET()
bez przekazania żadnych argumentów powoduje błąd:
SELECT FIND_IN_SET();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'