MariaDB ma INSTR()
funkcja, a także LOCATE()
funkcjonować. Obie funkcje wydają się robić dokładnie to samo – zwracają pozycję podciągu w ciągu.
Jest jednak różnica.
Różnice
Możemy zobaczyć różnicę między tymi dwiema funkcjami, patrząc na ich składnię, a także na kilka przykładów.
Składnia
Składnia INSTR()
:
INSTR(str,substr)
Dwie akceptowane składnie dla LOCATE()
:
LOCATE(substr,str)
LOCATE(substr,str,pos)
Gdzie str
jest ciągiem, substr
jest podciągiem do znalezienia, a pos
to pozycja do rozpoczęcia wyszukiwania.
Różnicę między tymi dwiema funkcjami można podsumować w następujący sposób:
LOCATE()
funkcja przyjmuje te same dwa argumenty, któreINSTR()
akceptuje, ale w odwrotnej kolejności.
LOCATE()
funkcja przyjmuje opcjonalny trzeci argument, aby określić pozycję początkową wyszukiwania.INSTR()
funkcja nie akceptuje takiego argumentu.
Więc LOCATE()
zapewnia dodatkową funkcjonalność, którą INSTR()
nie zapewnia.
Przykład 1 – Pierwsza różnica
Oto przykład pokazujący odwrotną kolejność, w jakiej obie funkcje akceptują swoje argumenty:
SELECT
INSTR('Disconnect', 'con'),
LOCATE('con', 'Disconnect');
Wynik:
+----------------------------+-----------------------------+ | INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') | +----------------------------+-----------------------------+ | 4 | 4 | +----------------------------+-----------------------------+
Przykład 2 – Druga różnica
Oto przykład pokazujący dodatkową funkcjonalność, którą LOCATE()
zapewnia ponad INSTR()
:
SELECT
INSTR('My cat is a good cat', 'cat') AS "INSTR()",
LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";
Wynik:
+---------+----------+----------------------------+ | INSTR() | LOCATE() | LOCATE() with 3rd Argument | +---------+----------+----------------------------+ | 4 | 4 | 18 | +---------+----------+----------------------------+
Ten przykład podkreśla fakt, że LOCATE()
funkcja dostarcza nam opcjonalny trzeci argument. Ten argument pozwala nam określić pozycję początkową wyszukiwania, co oznacza, że nie jesteśmy ograniczeni tylko do pierwszego wystąpienia w całym ciągu.