In MariaDB, POSITION()
ist eine integrierte Zeichenfolgenfunktion, die die Position des ersten Vorkommens einer Teilzeichenfolge innerhalb einer anderen Zeichenfolge zurückgibt. Es ist Teil von ODBC 3.0.
POSITION(substr IN str)
ist ein Synonym für LOCATE(substr,str)
.
POSITION()
ähnelt auch dem INSTR()
Funktion, außer dass POSITION()
verwendet den IN
Syntax, und dass die Argumentreihenfolge zwischen diesen beiden Funktionen umgekehrt ist.
Syntax
Die Syntax lautet wie folgt:
POSITION(substr IN str)
Wobei str
der String ist und substr
ist die Teilzeichenfolge, für die die Position von zurückgegeben werden soll.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT POSITION('cute' IN 'My cute dog');
Ergebnis:
+-----------------------------------+| POSITION('süß' IN 'Mein süßer Hund') |+-----------------------------------+ | 4 |+-----------------------------------+
Groß-/Kleinschreibung
POSITION()
führt eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durch:
SELECT POSITION('CUTE' IN 'My cute dog');
Ergebnis:
+-----------------------------------+| POSITION('SÜß' IN 'Mein süßer Hund') |+-----------------------------------+ | 4 |+-----------------------------------+
Mehrere Vorkommen
Wenn der Teilstring mehr als einmal vorkommt, wird nur die Position des ersten (von der Startposition) zurückgegeben:
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');
Ergebnis:
Teilweise Übereinstimmung
Wenn die Teilzeichenfolge Teil eines größeren Worts ist, ist es immer noch eine Übereinstimmung:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Ergebnis:
+---------------------------------------------+ | POSITION('Hund' IN 'Mein Hündchen ist SOOO süß!') |+---------------------------------------------- -------------+| 4 |+---------------------------------------------+
Aber wenn der String nur ein Teil des Teilstrings ist, ist es keine Übereinstimmung:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Ergebnis:
+---------------------------------------------+ | POSITION('doggy' IN 'Mein Hund ist SOOO süß!') |+---------------------------------------------- -------------+| 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 POSITION(' ' IN 'My dog');
Ergebnis:
+-----------------------------------+| POSITION(' ' IN 'Mein Hund') |+---------------------+| 3 |+-----------------------------------+
Leerer String
Folgendes passiert, wenn der Teilstring ein leerer String ist:
SELECT POSITION('' IN 'My dog');
Ergebnis:
+---------------------+| POSITION('' IN 'Mein Hund') |+---------------------+| 1 |+---------------------+
Keine Übereinstimmung
Wenn der Teilstring nicht im String gefunden wird, POSITION()
gibt 0
zurück :
SELECT position('cat' IN 'My dog');
Ergebnis:
+-------------------------------------+| position('Katze' IN 'Mein Hund') |+------------------------------------+| 0 |+------------------------------------+
Null-Argumente
Bereitstellung von null
für jedes der Argumente ergibt sich null
:
SELECT
POSITION(null IN 'My dog'),
POSITION('dog' IN null);
Ergebnis:
+------------------------------------+---------------- --------+| POSITION(null IN 'Mein Hund') | POSITION('Hund' IN null) |+------------------------------------+----------- --------------+| NULL | NULL |+------------------------------------+----------------- -------+
Angabe der falschen Anzahl von Argumenten
Aufruf von POSITION()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT POSITION('dog');
Ergebnis:
ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden