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.