match_recognize — reguläre Ausdrücke über Zeilen


Anwedungsfälle

Die match_recongnize-Klausel ist bei der Umsetzung der folgendne Anwendungsfällen hilfreich:

  • Serien von zusammenhängenden Ereignissen erkennen (siehe Folien).

  • Mustererkennung: Trendwenden, Periodische Ereignisse, …

  • Top-N pro Gruppen finden

Kompatibilität

Zeilenmustererkennung (Row pattern matching) wurde mit SQL:2016 durch drei optinale Features eingeführt: R010 ist die Basis: dieses Feature erfordert die match_recognize-Klausel wie sie oben verwendet wird mit den Aggregatfunktionen min, max, sum, count, avg. R020 erlaubt die Verwendung von Patterns zur Definition von Frames in der over-Klausel. R030 Unterstützt der restlichen Aggregatfunktionen (z. B. stddev_pop, …).

JDBC und ORA-17041 Missing IN or OUT parameter

Das Fragezeichen (?) wird bei JDBC als Platzhalter verwendet, ist aber auch ein gültiges Literal in der pattern-Klausel (z. B. für nicht-gierige Quantifizierungen). Der Oracle JDBC-Treiber behandelt das Fragezeichen grundsätzlich als Platzhalter. Um das Fragezeichen-Literal in der pattern-Klausel zu verwenden, bietet der Oracle JDBC-Treibe zwei Möglichkeiten:

Statement.setEscapeProcessing(false)

Der JDBC-Standard erlaubt die klientseitige Verarbeitung der SQL-Anweisung abzuschalten. Diese Methode funktioniert jedoch nicht für PreparedStatements und kann daher nicht mit Bind-Parametern verwendet werden.

{\?\}

Der Oracle JDBC-Treiber unterstützt eine proprietäre Escapesyntax für das Fragezeichen: {\?\}. Diese Zeichenkette kann in der pattern-Klausel anstatt eines einfachen Fragezeichens verwendet werden. Diese Methode funktioniert auch mit PreparedStatement.

Über den Autor

Foto von Markus Winand

Markus Winand lehrt effizientes SQL – inhouse und online. Er minimiert die Entwicklungszeit durch modernes SQL und optimiert die Laufzeit durch schlaue Indizierung – dazu hat er auch das Buch SQL Performance Explained veröffentlicht.

Sein Buch

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten.

Von Markus kaufen
(Taschenbuch und PDF)

Bei Amazon kaufen
(nur Taschenbuch)

Hol dir Markus

…für ein Training in dein Büro.

Das beliebte SQL-Performance Training für Entwickler lässt dich die Datenbank besser verstehen. Erfahre mehr»

„modern SQL“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz | CC-BY-NC-ND 3.0 Lizenz