Regulärer Ausdruck SUBSTRING
In der Form des regulären Ausdrucks (mit SIMILAR
) gibt die Funktion SUBSTRING
einen Teil des Strings zurück, der einem Muster eines regulären SQL-Ausdrucks entspricht.Wenn keine Übereinstimmung gefunden wird, wird NULL
zurückgegeben.
Das Muster "SIMILAR" wird aus drei Mustern für reguläre SQL-Ausdrücke gebildet, R1, R2 und R3.Das gesamte Muster hat die Form R1 || '<Escape>"' || R2 || '<Escape>"' || R3
, wobei <escape> das in der ESCAPE
-Klausel definierte Escape-Zeichen ist.R2 ist das Muster, das mit der zu extrahierenden Teilzeichenfolge übereinstimmt, und wird zwischen doppelten Anführungszeichen mit Escapezeichen eingeschlossen (<escape>"
, zB “#"
” mit Escape-Zeichen ‘ ##+
’).R1 entspricht dem Präfix des Strings und R3 dem Suffix des Strings.Sowohl R1 als auch R3 sind optional (sie können leer sein), aber das Muster muss mit der gesamten Zeichenfolge übereinstimmen.Mit anderen Worten, es reicht nicht aus, ein Muster anzugeben, das nur die zu extrahierende Teilzeichenfolge findet.
Tip
|
Die mit Escapezeichen versehenen doppelten Anführungszeichen um R2 können mit der Definition einer einzelnen Erfassungsgruppe in einer gängigeren Syntax für reguläre Ausdrücke wie PCRE verglichen werden.Das heißt, das vollständige Muster entspricht |
Note
|
Wenn einer von R1, R2 oder R3 keine Zeichenfolge der Länge Null ist und nicht das Format eines regulären SQL-Ausdrucks hat, wird eine Ausnahme ausgelöst. |
Das vollständige Format für reguläre SQL-Ausdrücke wird in Syntax: Reguläre SQL-Ausdrücke beschrieben
substring('abcabc' similar 'a#"bcab#"c' escape '#') -- bcab
substring('abcabc' similar 'a#"%#"c' escape '#') -- bcab
substring('abcabc' similar '_#"%#"_' escape '#') -- bcab
substring('abcabc' similar '#"(abc)*#"' escape '#') -- abcabc
substring('abcabc' similar '#"abc#"' escape '#') -- <null>