sql >> Databasteknik >  >> RDS >> MariaDB

Skillnaden mellan INSTR() och LOCATE() i MariaDB

MariaDB har en INSTR() funktion och även en LOCATE() fungera. Båda funktionerna verkar göra exakt samma sak – returnera positionen för en delsträng i en sträng.

Det finns dock en skillnad.

Skillnaderna

Vi kan se skillnaden mellan dessa två funktioner genom att titta på deras syntax, samt ett par exempel.

Syntax

Syntaxen för INSTR() :

INSTR(str,substr)

De två accepterade syntaxerna för LOCATE() :

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

Där str är strängen, substr är delsträngen att hitta och pos är platsen för att starta sökningen.

Skillnaden mellan de två funktionerna kan sammanfattas enligt följande:

  • LOCATE() funktion accepterar samma två argument som INSTR() accepterar, men i omvänd ordning.
  • LOCATE() funktion accepterar ett valfritt tredje argument för att ange startpositionen för sökningen. INSTR() funktion accepterar inte ett sådant argument.

LOCATE() ger extra funktionalitet som INSTR() ger inte.

Exempel 1 – Den första skillnaden

Här är ett exempel som visar den omvända ordningen i vilken de två funktionerna accepterar sina argument:

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

Resultat:

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

Exempel 2 – Den andra skillnaden

Här är ett exempel som visar den extra funktionaliteten som LOCATE() tillhandahåller över 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";

Resultat:

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

Det här exemplet framhäver det faktum att LOCATE() funktion ger oss ett valfritt tredje argument. Detta argument tillåter oss att ange en startposition för sökningen, vilket innebär att vi inte är begränsade till bara den första förekomsten i hela strängen.


  1. Varför behöver en oracle plsql varchar2-variabel en storlek men inte en parameter?

  2. 9.6 Scariest Patch Tournament

  3. MySQL:välja rader där en kolumn är null

  4. Hur kan jag se live MySQL-frågor?