match_recognize — reguläre Ausdrücke über Zeilen


Anwendungsfälle

Die match_recognize-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 ist der SQL Renaissance Botschafter auf der Mission, Entwickler auf die Evolution von SQL im 21. Jahrhundert aufmerksam zu machen. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

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.

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

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 und DSGVO | CC-BY-NC-ND 3.0 Lizenz