sql >> Databáze >  >> RDS >> Mysql

3 způsoby, jak najít pozici podřetězce v řetězci v MySQL

MySQL má řadu řetězcových funkcí, které vracejí pozici podřetězce v řetězci. Přesněji řečeno, vrátí pozici prvního výskytu v řetězci (nebo prvního výskytu za daným počátečním bodem).

Funkce, na které odkazuji, jsou následující:

  • INSTR()
  • LOCATE()
  • POSITION()

Níže je uveden přehled každého z nich.

INSTR()

INSTR() funkce vrací první výskyt podřetězce v řetězci.

Zde je syntaxe:

INSTR(str,substr)

Kde str je řetězec, který chcete hledat, a substr je podřetězec, který hledáte.

Příklad

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Výsledek:

+--------+
| Result |
+--------+
|     10 |
+--------+

V tomto případě řetězec dogs začíná na pozici 10.

Pokud podřetězec není nalezen, výsledek 0 je vráceno:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Výsledek:

+--------+
| Result |
+--------+
|      0 |
+--------+

LOCATE()

LOCATE() funkce funguje podobně, až na pár rozdílů; argumenty jsou v jiném pořadí a můžete zadat volitelný třetí parametr označující, kde začít hledat.

Proto jej můžete použít jedním z následujících způsobů:

LOCATE(substr,str)
LOCATE(substr,str,pos)

První syntaxe je stejná jako INTSR() syntaxe kromě str a substr jsou vyměněny.

Druhá syntaxe přidává volitelný pos argument, který vám umožňuje určit pozici pro zahájení vyhledávání.

Příklad první syntaxe

Zde je příklad použití první syntaxe:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Výsledek:

+--------+
| Result |
+--------+
|     10 |
+--------+

Příklad druhé syntaxe

Zde je příklad, kdy určíme počáteční pozici pro zahájení vyhledávání:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Výsledek:

+--------+
| Result |
+--------+
|      7 |
+--------+

Vidíme, že řetězec cat lze nalézt na pozici 1, ale zadali jsme 6 jako výchozí pozici. Pozice dalšího výskytu tohoto řetězce byla tedy ta, která byla vrácena.

Stejně jako u INSTR() funkce, pokud podřetězec není nalezen, 0 je vráceno.

POSITION()

POSITION() funkce je synonymem pro LOCATE() , ale s mírně odlišnou syntaxí.

Zde je syntaxe:

POSITION(substr IN str)

Toto je synonymum pro následující:

LOCATE(substr,str)

Jeden z předchozích příkladů bychom tedy mohli přepsat takto:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Výsledek:

+--------+
| Result |
+--------+
|     10 |
+--------+


  1. Jak převést malá písmena na velká v MySQL

  2. Nejlepší nové funkce Oracle 12c

  3. Používaná verze SQL Serveru nepodporuje datový typ datetime2?

  4. Chyba pádu Rails + Postgres:k databázi přistupují jiní uživatelé