INSTR()
funkcja zwraca pozycję pierwszego wystąpienia podciągu w ciągu. Zasadniczo robi to samo, co dwuargumentowa składnia LOCATE()
funkcja działa (poza tym, że kolejność argumentów jest odwrócona).
Składnia
Składnia wygląda tak:
INSTR(str,substr)
Gdzie str
to ciąg, który chcesz przeszukać, a substr
to podciąg, którego szukasz.
Przykład 1 – Podstawowe użycie
SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;
Wynik:
+--------+ | Result | +--------+ | 10 | +--------+
W tym przypadku ciąg dogs
zaczyna się od pozycji 10.
Przykład 2 – wielkość liter nie jest rozróżniana
Wielkość liter nie jest rozróżniana:
SELECT INSTR('Cats and dogs like to run', 'DOGS') AS 'Result 1', INSTR('Cats and DOGS like to run', 'dogs') AS 'Result 2';
Wynik:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 10 | 10 | +----------+----------+
Przykład 3 – Częściowe dopasowanie
Nie ma znaczenia, czy wyszukiwane hasło reprezentuje tylko część słowa, nadal będzie pasować (w końcu po prostu szukasz podciągu w ciągu):
SELECT INSTR('Cats and dogs like to run', 'do') AS Result;
Wynik:
+--------+ | Result | +--------+ | 10 | +--------+
Spacja jest nadal częścią ciągu. Możesz więc wyszukać pierwsze miejsce, jeśli potrzebujesz:
SELECT INSTR('Cats and dogs like to run', ' ') AS Result;
Wynik:
+--------+ | Result | +--------+ | 5 | +--------+
Przykład 4 – Tylko pierwsze wystąpienie
Pamiętaj, że zwracana jest tylko pozycja pierwszego wystąpienia:
SELECT INSTR('Cats and dogs like to run', 'a') AS Result;
Wynik:
+--------+ | Result | +--------+ | 2 | +--------+
Przykład 5 – Kiedy nie można znaleźć podciągu
Jeśli podciąg nie zostanie znaleziony, wynik 0
jest zwracany:
SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 6 – Nieprawidłowa liczba parametrów
Jeśli pominiesz którykolwiek z parametrów, pojawi się błąd:
SELECT INSTR('Cats and dogs like to run') AS Result;
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'
Otrzymasz również błąd, jeśli podasz zbyt wiele parametrów:
SELECT INSTR('Cats and dogs like to run', 'dogs', 'cats') AS Result;
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'