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 bei Amazon kaufen

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

Die Essenz: SQL-Tuning auf 200 Seiten

Bei Amazon kaufen
(Taschenbuch)

Taschenbuch und PDF auch auf Markus' Webseite erhältlich.

Holen Sie sich Markus

…für ein Training ins Büro.

Sein beliebtes Training stimmt Entwickler auf SQL Performance ein.

Erfahren Sie 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