V MySQL, POSITION()
Funkce vrací pozici prvního výskytu podřetězce v řetězci.
Tato funkce je ve skutečnosti synonymem pro LOCATE()
, ale s trochu jinou syntaxí. LOCATE()
funkce má také další funkce v tom, že vám umožňuje definovat výchozí pozici pro vaše vyhledávání.
Syntaxe
Základní syntaxe vypadá takto:
POSITION(substr IN str)
Kde substr
je podřetězec a str
je řetězec.
Příklad 1 – Základní použití
SELECT POSITION('Cat' IN 'The Cat') Result;
Výsledek:
+--------+ | Result | +--------+ | 5 | +--------+
Příklad 2 – Rozlišování malých a velkých písmen
POSITION()
funkce je vícebajtová bezpečná a rozlišuje malá a velká písmena pouze v případě, že alespoň jeden argument je binární řetězec.
Následující příklad tedy nerozlišuje velká a malá písmena:
SELECT POSITION('Cat' IN 'The cat') Result;
Výsledek:
+--------+ | Result | +--------+ | 5 | +--------+
Příklad 3 – Žádná shoda
Funkce vrací 0
pokud podřetězec není v řetězci nalezen:
SELECT POSITION('Dog' IN 'The cat') Result;
Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
Příklad 4 – Vložené dílčí řetězce
Buďte opatrní při výběru podřetězce. Pokud je součástí jiného slova, můžete získat falešně pozitivní:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Výsledek:
+--------+ | Result | +--------+ | 6 | +--------+
Pokud hledáte pouze kočku , zvíře, to by bylo falešně pozitivní.
Příklad 5 – Pouze první výskyt
Pamatujte, že tato funkce vrací pouze pozici prvního výskyt podřetězce. Všechny následující výskyty jsou ignorovány:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Výsledek:
+--------+ | Result | +--------+ | 4 | +--------+
Příklad 6 – Argumenty NULL
Pokud je některý z argumentů NULL
, výsledkem je NULL
:
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Výsledek:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
Jak již bylo zmíněno, můžete také použít LOCATE()
funkce, která vám umožní definovat výchozí pozici pro vyhledávání.