sql >> Databáze >  >> RDS >> MariaDB

Jak LOCATE() funguje v MariaDB

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ýsledkem null :

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'

  1. Vložte pole do databáze MySQL pomocí PHP

  2. MySQL vs. MongoDB

  3. Optimalizace databáze:Indexy

  4. java.lang.OutOfMemoryError:[vyčerpání paměti] při čtení dat ze Sqlite Android