Die REGEXP_INSTR SQL-Funktion in MySQL und MariaDB - Anfangsindex von regulären Ausdrücken |
|
| REGEXP_INSTR | Syntax: | REGEXP_INSTR(Zeichenkette, Muster [, Position] [, Auftreten] [, Rückgabe-Option] [, Übereinstimmungstyp]) | Rückgabe-Wert: | INTEGER | Funktions-Typ: | Reguläre Ausdrücke | |
| | Die SQL-Funktion REGEXP_INSTR() gibt den Anfangsindex der Teilzeichenfolge von "Zeichenfolge" zurück, die mit dem regulären Ausdruck "Muster" übereinstimmt.
Die Funktion gibt 0 zurück, wenn es keine Übereinstimmung gibt. Zeichenindizes beginnen bei 1.
Wenn der Wert von "Zeichenfolge" oder "Muster" NULL ist, ist der Rückgabewert der REGEXP_INSTR()-Funktion ebenfalls NULL.
In MySQL akzeptiert REGEXP_INSTR() folgende optionale Argumente: In MariaDB stehen diese Optionen nicht zur Verfügung.
"Position": Die Position in "Zeichenfolge", an der die Suche beginnen soll. Der Standardwert ist 1, wenn nicht angegeben.
"Auftreten": Nach welchem Vorkommen einer Übereinstimmung gesucht werden soll. Der Standardwert ist 1, wenn nicht angegeben.
"Rückgabe-Option": Welche Art von Position zurückgegeben werden soll. Wenn dieser Wert 0 ist, gibt REGEXP_INSTR() die Position des ersten Zeichens der übereinstimmenden Teilzeichenfolge zurück. Wenn dieser Wert 1 ist, gibt REGEXP_INSTR() die Position nach der übereinstimmenden Teilzeichenfolge zurück. Der Standardwert ist 0, wenn nicht angegeben.
"Übereinstimmungstyp": Eine Zeichenfolge, die angibt, wie der Abgleich durchgeführt wird:
Typ | Beschreibung |
c | Groß- und Kleinschreibung wird beachtet. |
i | Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung. |
m | Mehrzeiliger Modus. Zeilenabschlusszeichen innerhalb der Zeichenfolge werden erkannt. Das Standardverhalten besteht darin, Zeilenabschlusszeichen nur am Anfang und am Ende von "Zeichenfolge" abzugleichen. |
n | Ein Punkt "." wird als Zeilenabschlusszeichen interpretiert: Voreinstellung. |
u | Nur-Unix-Zeilenenden. Nur das Zeilenumbruchzeichen wird von den Übereinstimmungs-Operatoren ".", ",", "^" und "$" als Zeilenende erkannt. |
Wenn innerhalb von "Übereinstimmungstyp" Zeichen angegeben werden, die widersprüchliche Optionen ergeben, hat das rechts-stehende Zeichen Vorrang. | Beispiele für die REGEXP_INSTR()-Funktion auf MariaDB 10.3 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
|
select regexp_instr('Test-aa', 'a');
select regexp_instr(binary 'Test-aa', 'a');
select regexp_instr('Test-aa', 'x');
select regexp_instr('Test-aa', 'T');
SELECT REGEXP_INSTR('Test-aa-abc', 'AB');
SELECT REGEXP_INSTR('Test-aa-abc', '(?i)AB');
SELECT REGEXP_INSTR('Test-aa-abc', '(?i)T(?-i)est');
SELECT REGEXP_INSTR('Test-aa-abc', '(?i)T(?-i)EST');
SELECT REGEXP_INSTR(null, 'abc');
SELECT REGEXP_INSTR('Test-aa-abc', null);
|
|
regexp_instr('Test-aa', 'a') |
int(11) |
6 |
|
|
regexp_instr(binary 'Test-aa', 'a') |
int(11) |
6 |
|
|
regexp_instr('Test-aa', 'x') |
int(11) |
0 |
|
|
regexp_instr('Test-aa', 'T') |
int(11) |
1 |
|
|
REGEXP_INSTR('Test-aa-abc', 'AB') |
int(11) |
0 |
|
|
REGEXP_INSTR('Test-aa-abc', '(?i)AB') |
int(11) |
9 |
|
|
REGEXP_INSTR('Test-aa-abc', '(?i)T(?-i)est') |
int(11) |
1 |
|
|
REGEXP_INSTR('Test-aa-abc', '(?i)T(?-i)EST') |
int(11) |
0 |
|
|
REGEXP_INSTR(null, 'abc') |
int(11) |
NULL |
|
|
REGEXP_INSTR('Test-aa-abc', null) |
int(11) |
NULL |
|
|
| Beispiele für die REGEXP_INSTR()-Funktion auf MySQL 8.0 |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
|
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'ab');
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'ab', 7);
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3);
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3, 0);
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3, 1);
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'AB', 1, 3, 0);
SELECT REGEXP_INSTR('Test-abc-abc-abc', 'AB', 1, 3, 0, 'i');
SELECT REGEXP_INSTR(null, 'abc');
SELECT REGEXP_INSTR('Test-aa-abc', null);
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'ab') |
bigint(21) |
6 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'ab', 7) |
bigint(21) |
10 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3) |
bigint(21) |
14 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3, 0) |
bigint(21) |
14 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'ab', 1, 3, 1) |
bigint(21) |
16 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'AB', 1, 3, 0) |
bigint(21) |
0 |
|
|
REGEXP_INSTR('Test-abc-abc-abc', 'AB', 1, 3, 0, 'i') |
bigint(21) |
14 |
|
|
REGEXP_INSTR(null, 'abc') |
bigint(21) |
NULL |
|
|
REGEXP_INSTR('Test-aa-abc', null) |
bigint(21) |
NULL |
|
|
| Die Beispiele wurden mit dem MyWAY SQL-Manager erstellt: | Verwendung der REGEXP_INSTR() Funktion in MySQL und MariaDB-Datenbanken | Mit der Funktion REGEXP_INSTR() in MySQL und MariaDB wird nach der Position des ersten Vorkommens eines regulären Ausdrucksmusters innerhalb einer Zeichenfolge gesucht. Die Funktion gibt die Position als ganzzahligen Wert zurück. REGEXP_INSTR() bietet eine praktische Möglichkeit, die Position einer Übereinstimmung mit einem regulären Ausdruck innerhalb einer Zeichenfolge zu ermitteln. Es kann für verschiedene Zwecke verwendet werden, zum Beispiel zum Auffinden bestimmter Muster, zum Extrahieren von Teilzeichenfolgen oder zum Durchführen bedingter Operationen basierend auf der Position einer Übereinstimmung.
In MySQL stehen für diese Funktion zusätzliche Optionen zur Verfügung, die in MariaDB nicht vorhanden sind. | | Weitere MySQL und MariaDB SQL Reguläre Ausdrücke | REGEXP | Zeichenkette [NOT] REGEXP Muster | Mehr zur REGEXP-Funktion |
| REGEXP_LIKE | REGEXP_LIKE(Zeichenkette, Muster [, Übereinstimmungstyp]) | Mehr zur REGEXP_LIKE-Funktion |
| REGEXP_REPLACE | REGEXP_REPLACE(Zeichenkette, Muster, Ersetzen durch [, Position] [, Auftreten] [, Übereinstimmungstyp]) | Mehr zur REGEXP_REPLACE-Funktion |
| REGEXP_SUBSTR | REGEXP_SUBSTR(Zeichenkette, Muster [, Position] [, Auftreten] [, Übereinstimmungstyp]) | Mehr zur REGEXP_SUBSTR-Funktion |
| RLIKE | Zeichenkette [NOT] RLIKE Muster | Mehr zur RLIKE-Funktion |
|
|
| | Weitere Informationen zur SQL-Funktion REGEXP_INSTR: und |
|
|
|
|