sql >> Databáze >  >> RDS >> PostgreSQL

Vybrat, dokud se řádek neshoduje v postgresql?

To, co chcete, je druh zastavení. Pokud je mi známo, v SQL nic takového není, alespoň dialekt PostgreSQL.

Co můžete udělat, je použít proceduru PL/PgSQL ke čtení řádků z kurzoru a jejich vrácení, dokud není splněna podmínka zastavení. Nebude to super rychlé, ale bude to v pořádku. Je to jen FOR smyčka přes dotaz s výrazem IF expression THEN exit; ELSE return next; END IF; . Není vyžadován žádný explicitní kurzor, protože PL/PgSQL jej použije interně, pokud FOR smyčka přes dotaz.

Další možností je vytvořit kurzor a číst z něj v aplikaci bloky řádků a poté část posledního bloku zahodit, jakmile je splněna podmínka zastavení.

V každém případě bude kurzor přesně takový, jaký chcete.

Mimochodem, stop výraz by ve skutečnosti nebylo příliš těžké implementovat v PostgreSQL. Museli byste implementovat nový typ uzlu spouštěče, ale díky nové podpoře CustomScan by to bylo praktické v rozšíření. Pak byste jen vyhodnotili výraz a rozhodli se, zda pokračovat v načítání řádků.



  1. pgAdmin Alternativy - Správa databáze PostgreSQL GUI ClusterControl

  2. Uložte dotaz mysql do souboru Excel z webové stránky php

  3. Chyba (ORA-21700) s operátorem tabulky po aktualizaci na Oracle 12.2 z 12.1

  4. Elastické vyhledávání fulltext vs mysql fulltext?