V MariaDB LOCATE()
je vestavěná řetězcová funkce, která vrací pozici prvního výskytu podřetězce v jiném řetězci.
LOCATE()
je podobný INSTR()
funkce, kromě LOCATE()
poskytuje možnost zadat počáteční pozici pro vyhledávání. Také pořadí argumentů je mezi těmito dvěma funkcemi obrácené.
Syntaxe
LOCATE()
funkce podporuje syntaxi dvou argumentů a syntaxi tří argumentů.
Syntaxe dvou argumentů:
LOCATE(substr,str)
Syntaxe tří argumentů:
LOCATE(substr,str,pos)
Kde str
je řetězec, substr
je podřetězec, který se má najít, a pos
je pozice pro zahájení vyhledávání.
Příklad
Zde je základní příklad:
SELECT LOCATE('hot', 'The hot sun');
Výsledek:
+------------------------------+| LOCATE('horké', 'horké slunce') |+------------------------------+| 5 |+------------------------------+
Výchozí pozice
Zde je příklad poskytnutí výchozí pozice pro vyhledávání:
SELECT LOCATE('hot', 'The hot sun is really hot', 8);
Výsledek:
+---------------------------------------------- --+| LOCATE('horké'; 'horké slunce je opravdu horké', 8) |+------------------------------- ------------------+| 23 |+----------------------------------------------- -+
Rozlišovat malá a velká písmena
LOCATE()
provede vyhledávání bez rozlišení velkých a malých písmen:
SELECT LOCATE('HOT', 'The hot sun');
Výsledek:
+------------------------------+| LOCATE('HOT', 'The hot sun') |+------------------------------+| 5 |+------------------------------+
Více výskytů
Pokud se podřetězec vyskytuje více než jednou, vrátí se pouze pozice prvního (z výchozí pozice):
SELECT LOCATE('hot', 'The hot sun is really hot');
Výsledek:
+--------------------------------------------+| LOCATE('horké'; 'horké slunce je opravdu horké') |+--------------------------------- -----------+| 5 |+--------------------------------------------+Tady je to s výchozí pozicí:
SELECT LOCATE('hot', 'The hot sun is really hot', 20);
Výsledek:
+---------------------------------------------- --+| LOCATE('horké'; 'horké slunce je opravdu horké', 20) |+------------------------------- ------------------+| 23 |+----------------------------------------------- -+Částečná shoda
Pokud je podřetězec součástí většího slova, stále se jedná o shodu:
SELECT LOCATE('hot', 'The hottest sun');
Výsledek:
+----------------------------------+| LOCATE('horký', 'nejžhavější slunce') |+----------------------------------+| 5 |+----------------------------------+Ale pokud je řetězec pouze částí podřetězce, nejde o shodu:
SELECT LOCATE('hottest', 'The hot sun');
Výsledek:
+----------------------------------+| LOCATE('nejžhavější', 'žhavé slunce') |+----------------------------------+| 0 |+----------------------------------+Mezery
Znak mezery je stále řetězec, takže do podřetězce můžeme zahrnout mezery, i když je to jediný znak:
SELECT LOCATE(' ', 'The hot sun');
Výsledek:
+----------------------------+| LOCATE(' ', 'Horké slunce') |+----------------------------+| 4 |+----------------------------+Prázdný řetězec
Co se stane, když je podřetězec prázdný řetězec:
SELECT LOCATE('', 'The hot sun');
Výsledek:
+---------------------------+| LOCATE('', 'Horké slunce') |+---------------------------+| 1 |+---------------------------+Žádná shoda
Pokud podřetězec v řetězci není nalezen,
LOCATE()
vrátí0
:SELECT LOCATE('cold', 'The hot sun');
Výsledek:
+-------------------------------+| LOCATE('studený', 'horké slunce') |+-------------------------------+| 0 |+-------------------------------+Nulové argumenty
Poskytování
null
pro kterýkoli z argumentů je výsledkemnull
:SELECT LOCATE(null, 'The hot sun'), LOCATE('hot', null);
Výsledek:
+-----------------------------+---------------- -----+| LOCATE(null, 'horké slunce') | LOCATE('horké', null) |+-----------------------------+---------- -----------+| NULL | NULL |+-----------------------------+----------------- ----+Uvedení nesprávného počtu argumentů
Volání
LOCATE()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT LOCATE('hot');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'LOCATE'