PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélectionnez jusqu'à ce que la ligne corresponde dans postgresql ?

Ce que vous voulez, c'est une sorte de condition d'arrêt. Autant que je sache, il n'y a rien de tel dans SQL, du moins dans le dialecte de PostgreSQL.

Ce que vous pouvez faire est d'utiliser une procédure PL/PgSQL pour lire les lignes d'un curseur et les renvoyer jusqu'à ce que la condition d'arrêt soit remplie. Ce ne sera pas super rapide, mais ça ira. C'est juste un FOR boucle sur une requête avec une expression IF expression THEN exit; ELSE return next; END IF; . Aucun curseur explicite n'est requis car PL/PgSQL en utilisera un en interne si vous FOR boucle sur une requête.

Une autre option consiste à créer un curseur et à y lire des blocs de lignes dans l'application, puis à supprimer une partie du dernier bloc une fois la condition d'arrêt remplie.

Dans tous les cas, un curseur sera ce que vous voulez.

Soit dit en passant, une expression d'arrêt ne serait pas trop difficile à implémenter dans PostgreSQL. Vous devrez implémenter un nouveau type de nœud d'exécuteur, mais la nouvelle prise en charge de CustomScan rendrait cela pratique dans une extension. Ensuite, il vous suffirait d'évaluer une expression pour décider de poursuivre ou non la récupération des lignes.