MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie LOCATE() in MariaDB funktioniert

In MariaDB LOCATE() ist eine eingebaute String-Funktion, die die Position des ersten Vorkommens eines Teilstrings innerhalb eines anderen Strings zurückgibt.

LOCATE() ähnelt dem INSTR() Funktion, außer dass LOCATE() bietet die Möglichkeit, eine Startposition für die Suche anzugeben. Außerdem wird die Argumentreihenfolge zwischen diesen beiden Funktionen umgekehrt.

Syntax

Das LOCATE() -Funktion unterstützt eine Zwei-Argument-Syntax und eine Drei-Argument-Syntax.

Syntax mit zwei Argumenten:

LOCATE(substr,str) 

Syntax mit drei Argumenten:

LOCATE(substr,str,pos) 

Wobei str ist die Zeichenfolge, substr der zu suchende Teilstring ist und pos ist die Position, um die Suche zu starten.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT LOCATE('hot', 'The hot sun'); 

Ergebnis:

+------------------------------+| LOCATE('hot', 'The hot sun') |+------------------------------+| 5 |+------------------------------+

Startposition

Hier ist ein Beispiel für die Angabe einer Startposition für die Suche:

SELECT LOCATE('hot', 'The hot sun is really hot', 8); 

Ergebnis:

+---------------------------------------------- --+| LOCATE('hot', 'Die heiße Sonne ist wirklich heiß', 8) |+------------------------------- ------------------+| 23 |+---------------------------------------------- -+

Groß-/Kleinschreibung

LOCATE() führt eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durch:

SELECT LOCATE('HOT', 'The hot sun'); 

Ergebnis:

+------------------------------+| LOCATE('HOT', 'Die heiße Sonne') |+------------------------------+| 5 |+------------------------------+

Mehrere Vorkommen

Wenn der Teilstring mehr als einmal vorkommt, wird nur die Position des ersten (von der Startposition) zurückgegeben:

SELECT LOCATE('hot', 'The hot sun is really hot'); 

Ergebnis:

+--------------------------------------------------+| LOCATE('hot', 'Die heiße Sonne ist wirklich heiß') |+---------------------------------------------- -----------+| 5 |+----------------------------------------------------+ 

Hier ist es mit einer Startposition:

SELECT LOCATE('hot', 'The hot sun is really hot', 20); 

Ergebnis:

+---------------------------------------------- --+| LOCATE('hot', 'Die heiße Sonne ist wirklich heiß', 20) |+------------------------------- ------------------+| 23 |+---------------------------------------------- -+

Teilweise Übereinstimmung

Wenn die Teilzeichenfolge Teil eines größeren Worts ist, ist es immer noch eine Übereinstimmung:

SELECT LOCATE('hot', 'The hottest sun'); 

Ergebnis:

+----------------------------------------------+| LOCATE('hot', 'Die heißeste Sonne') |+------------------------------------------------+| 5 |+-----------------------------------------------+

Aber wenn der String nur ein Teil des Teilstrings ist, ist es keine Übereinstimmung:

SELECT LOCATE('hottest', 'The hot sun'); 

Ergebnis:

+----------------------------------------------+| LOCATE('heißeste', 'Die heiße Sonne') |+------------------------------------------------+| 0 |+---------------------------------------------+

Leerzeichen

Das Leerzeichen ist immer noch ein String, also können wir Leerzeichen in den Teilstring einfügen, auch wenn es das einzige Zeichen ist:

SELECT LOCATE(' ', 'The hot sun'); 

Ergebnis:

+-----------------------------------+| LOCATE(' ', 'Die heiße Sonne') |+-----------------------------------+| 4 |+------------------------------------+

Leerer String

Folgendes passiert, wenn der Teilstring ein leerer String ist:

SELECT LOCATE('', 'The hot sun'); 

Ergebnis:

+-----------------------------------+| LOCATE('', 'Die heiße Sonne') |+-----------------------------------+| 1 |+-----------------------------------+

Keine Übereinstimmung

Wenn der Teilstring nicht im String gefunden wird, LOCATE() gibt 0 zurück :

SELECT LOCATE('cold', 'The hot sun'); 

Ergebnis:

+-------------------------------+| LOCATE('cold', 'the hot sun') |+------------------------------+| 0 |+-------------------------------+

Null-Argumente

Bereitstellung von null für jedes der Argumente ergibt sich null :

SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null); 

Ergebnis:

+-------------------------------------+---------------- -----+| LOCATE(null, 'Die heiße Sonne') | LOCATE('heiß', null) |+------------------------------------+---------- -----------+| NULL | NULL |+-------------------------------------+---------------- ----+

Angabe der falschen Anzahl von Argumenten

Aufruf von LOCATE() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT LOCATE('hot'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'LOCATE'