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, …).

BigQueryDb2 (LUW)MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLitefrom-Klauselwindow-KlauselVoller Aggregatsupport

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 gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

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

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

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

Erfahren Sie mehr»

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„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