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

Jak POSITION() funguje v MariaDB

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

  1. Odstraňování HTML tagů v PostgreSQL

  2. Jak deklarovat vstupní a výstupní parametry v uložené proceduře/funkci serveru SQL?

  3. java.lang.IllegalArgumentException:sloupec '_id' neexistuje

  4. java.sql.SQLException:I/O Error:Resetování připojení na linuxovém serveru