W MariaDB, LOCATE() jest wbudowaną funkcją ciągu, która zwraca pozycję pierwszego wystąpienia podciągu w innym ciągu.
LOCATE() jest podobny do INSTR() funkcja, z wyjątkiem tego, że LOCATE() udostępnia opcję określenia pozycji początkowej wyszukiwania. Również kolejność argumentów jest odwrócona między tymi dwiema funkcjami.
Składnia
LOCATE() funkcja obsługuje składnię dwuargumentową i składnię trzyargumentową.
Składnia dwuargumentowa:
LOCATE(substr,str) Składnia trzech argumentów:
LOCATE(substr,str,pos)
Gdzie str jest ciągiem, substr jest podciągiem do znalezienia, a pos to pozycja do rozpoczęcia wyszukiwania.
Przykład
Oto podstawowy przykład:
SELECT LOCATE('hot', 'The hot sun'); Wynik:
+------------------------------+
| LOCATE('hot', 'The hot sun') |
+------------------------------+
| 5 |
+------------------------------+ Pozycja wyjściowa
Oto przykład podania pozycji początkowej wyszukiwania:
SELECT LOCATE('hot', 'The hot sun is really hot', 8); Wynik:
+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 8) |
+------------------------------------------------+
| 23 |
+------------------------------------------------+ Wrażliwość na wielkość liter
LOCATE() wykonuje wyszukiwanie bez uwzględniania wielkości liter:
SELECT LOCATE('HOT', 'The hot sun'); Wynik:
+------------------------------+
| LOCATE('HOT', 'The hot sun') |
+------------------------------+
| 5 |
+------------------------------+ Wiele wystąpień
Jeśli podciąg występuje więcej niż raz, zwracana jest tylko pozycja pierwszego (od pozycji początkowej):
SELECT LOCATE('hot', 'The hot sun is really hot'); Wynik:
+--------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot') |
+--------------------------------------------+
| 5 |
+--------------------------------------------+ Oto pozycja wyjściowa:
SELECT LOCATE('hot', 'The hot sun is really hot', 20); Wynik:
+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 20) |
+------------------------------------------------+
| 23 |
+------------------------------------------------+ Dopasowanie częściowe
Jeśli podciąg jest częścią większego słowa, nadal jest zgodny:
SELECT LOCATE('hot', 'The hottest sun'); Wynik:
+----------------------------------+
| LOCATE('hot', 'The hottest sun') |
+----------------------------------+
| 5 |
+----------------------------------+ Ale jeśli ciąg jest tylko częścią podciągu, nie jest to dopasowanie:
SELECT LOCATE('hottest', 'The hot sun'); Wynik:
+----------------------------------+
| LOCATE('hottest', 'The hot sun') |
+----------------------------------+
| 0 |
+----------------------------------+ Przestrzenie
Znak spacji nadal jest ciągiem, więc możemy w podłańcuch umieszczać spacje, nawet jeśli jest to jedyny znak:
SELECT LOCATE(' ', 'The hot sun'); Wynik:
+----------------------------+
| LOCATE(' ', 'The hot sun') |
+----------------------------+
| 4 |
+----------------------------+ Pusty ciąg
Oto, co się dzieje, gdy podciąg jest pustym ciągiem:
SELECT LOCATE('', 'The hot sun'); Wynik:
+---------------------------+
| LOCATE('', 'The hot sun') |
+---------------------------+
| 1 |
+---------------------------+ Brak dopasowania
Jeśli podciąg nie zostanie znaleziony w ciągu, LOCATE() zwraca 0 :
SELECT LOCATE('cold', 'The hot sun'); Wynik:
+-------------------------------+
| LOCATE('cold', 'The hot sun') |
+-------------------------------+
| 0 |
+-------------------------------+ Argumenty zerowe
Podanie null dla dowolnego z argumentów daje wynik null :
SELECT
LOCATE(null, 'The hot sun'),
LOCATE('hot', null); Wynik:
+-----------------------------+---------------------+
| LOCATE(null, 'The hot sun') | LOCATE('hot', null) |
+-----------------------------+---------------------+
| NULL | NULL |
+-----------------------------+---------------------+ Podanie niewłaściwej liczby argumentów
Wywołanie LOCATE() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT LOCATE('hot'); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOCATE'