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