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

Rozdíl mezi INSTR() vs LOCATE() v MariaDB

MariaDB má INSTR() funkce a také LOCATE() funkce. Zdá se, že obě funkce dělají přesně to samé – vracejí pozici podřetězce v řetězci.

Je tu však rozdíl.

Rozdíly

Rozdíl mezi těmito dvěma funkcemi můžeme vidět při pohledu na jejich syntaxi a také na několika příkladech.

Syntaxe

Syntaxe pro INSTR() :

INSTR(str,substr)

Dvě akceptované syntaxe pro LOCATE() :

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

Kde str je řetězec, substr je podřetězec, který se má najít, a pos je pozice pro zahájení vyhledávání.

Rozdíl mezi těmito dvěma funkcemi lze shrnout následovně:

  • Položka LOCATE() funkce přijímá stejné dva argumenty jako INSTR() přijímá, ale v obráceném pořadí.
  • Položka LOCATE() funkce přijímá volitelný třetí argument k určení počáteční pozice pro vyhledávání. INSTR() funkce takový argument nepřijímá.

Takže LOCATE() poskytuje další funkce, které INSTR() neposkytuje.

Příklad 1 – První rozdíl

Zde je příklad, který ukazuje obrácené pořadí, ve kterém dvě funkce přijímají své argumenty:

SELECT 
    INSTR('Disconnect', 'con'),
    LOCATE('con', 'Disconnect');

Výsledek:

+----------------------------+-----------------------------+
| INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
+----------------------------+-----------------------------+
|                          4 |                           4 |
+----------------------------+-----------------------------+

Příklad 2 – Druhý rozdíl

Zde je příklad, který ukazuje další funkce, které LOCATE() poskytuje přes INSTR() :

SELECT 
    INSTR('My cat is a good cat', 'cat') AS "INSTR()",
    LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
    LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";

Výsledek:

+---------+----------+----------------------------+
| INSTR() | LOCATE() | LOCATE() with 3rd Argument |
+---------+----------+----------------------------+
|       4 |        4 |                         18 |
+---------+----------+----------------------------+

Tento příklad zdůrazňuje skutečnost, že LOCATE() Funkce nám poskytuje volitelný třetí argument. Tento argument nám umožňuje určit počáteční pozici pro vyhledávání, což znamená, že nejsme omezeni pouze na první výskyt v celém řetězci.


  1. Jak nainstalovat localdb samostatně?

  2. DATETIME2FROMPARTS() Příklady v SQL Server (T-SQL)

  3. Sloučit tabulku a protokol změn do zobrazení v PostgreSQL

  4. PostgreSQL - načte řádek, který má pro sloupec hodnotu Max