V MariaDB, POSITION()
je vestavěná řetězcová funkce, která vrací pozici prvního výskytu podřetězce v jiném řetězci. Je součástí ODBC 3.0.
POSITION(substr IN str)
je synonymem pro LOCATE(substr,str)
.
POSITION()
je také podobný INSTR()
funkce, kromě POSITION()
používá IN
syntaxe a že pořadí argumentů je mezi těmito dvěma funkcemi obrácené.
Syntaxe
Syntaxe vypadá takto:
POSITION(substr IN str)
Kde str
je řetězec a substr
je podřetězec, pro který se má vrátit pozice.
Příklad
Zde je základní příklad:
SELECT POSITION('cute' IN 'My cute dog');
Výsledek:
+-----------------------------------+| POZICE('roztomilý' V 'Můj roztomilý pes') |+-----------------------------------+ | 4 |+-----------------------------------+
Rozlišovat malá a velká písmena
POSITION()
provede vyhledávání bez rozlišení velkých a malých písmen:
SELECT POSITION('CUTE' IN 'My cute dog');
Výsledek:
+-----------------------------------+| POSITION('CUTE' IN 'My cute dog') |+-----------------------------------+ | 4 |+-----------------------------------+
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 POSITION('cute' IN 'My cute dog is SOOOO cute!');
Výsledek:
+---------------------------------------------- ----+| POSITION('roztomilý' V 'Můj roztomilý pes je TAKÉ roztomilý!') |+-------------------------------- ------------------+| 4 |+----------------------------------------------- ---+
Částečná shoda
Pokud je podřetězec součástí většího slova, stále se jedná o shodu:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Výsledek:
+---------------------------------------------+ | POZICE('pes' V 'Můj pejsek je TAK roztomilý!') |+--------------------------------- ------------+| 4 |+---------------------------------------------+Ale pokud je řetězec pouze částí podřetězce, nejde o shodu:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Výsledek:
+---------------------------------------------+ | POZICE('pes' V 'Můj pes je TAK roztomilý!') |+--------------------------------- ------------+| 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 POSITION(' ' IN 'My dog');
Výsledek:
+---------------------------+| POSITION(' ' IN 'Můj pes') |+---------------------------+| 3 |+---------------------------+Prázdný řetězec
Co se stane, když je podřetězec prázdný řetězec:
SELECT POSITION('' IN 'My dog');
Výsledek:
+--------------------------+| POSITION('' IN 'Můj pes') |+--------------------------+| 1 |+--------------------------+Žádná shoda
Pokud podřetězec v řetězci není nalezen,
POSITION()
vrátí0
:SELECT position('cat' IN 'My dog');
Výsledek:
+-----------------------------+| pozice('kočka' V 'Můj pes') |+-----------------------------+| 0 |+-----------------------------+Nulové argumenty
Poskytování
null
pro kterýkoli z argumentů je výsledkemnull
:SELECT POSITION(null IN 'My dog'), POSITION('dog' IN null);
Výsledek:
+----------------------------+----------------- --------+| POSITION(null IN 'Můj pes') | POSITION('pes' IN null) |+----------------------------+----------- ---------------+| NULL | NULL |+----------------------------+------------------ -------+Uvedení nesprávného počtu argumentů
Volání
POSITION()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT POSITION('dog');
Výsledek:
ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1