PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Auswählen, bis die Zeile in Postgresql übereinstimmt?

Was Sie wollen, ist eine Art Stopp-Bedingung. Soweit mir bekannt ist, gibt es so etwas in SQL nicht, zumindest im Dialekt von PostgreSQL.

Sie können eine PL/PgSQL-Prozedur verwenden, um Zeilen von einem Cursor zu lesen und sie zurückzugeben, bis die Stoppbedingung erfüllt ist. Es wird nicht superschnell sein, aber es wird in Ordnung sein. Es ist nur ein FOR Schleife über eine Abfrage mit einem IF expression THEN exit; ELSE return next; END IF; . Es ist kein expliziter Cursor erforderlich, da PL/PgSQL intern einen verwendet, wenn Sie FOR verwenden Schleife über eine Abfrage.

Eine andere Möglichkeit besteht darin, einen Cursor zu erstellen und daraus Zeilenblöcke in der Anwendung zu lesen und dann einen Teil des letzten Blocks zu verwerfen, sobald die Stoppbedingung erfüllt ist.

In jedem Fall wird ein Cursor das sein, was Sie wollen.

Ein Stoppausdruck wäre übrigens nicht allzu schwer in PostgreSQL zu implementieren. Sie müssten einen neuen Executor-Knotentyp implementieren, aber die neue CustomScan-Unterstützung würde dies in einer Erweiterung praktisch machen. Dann würden Sie einfach einen Ausdruck auswerten, um zu entscheiden, ob Sie mit dem Abrufen von Zeilen fortfahren möchten oder nicht.