Hat PostgreSQL in Oracle eine Pseudospalte wie "LEVEL"?

8

Hat PostgreSQL in Oracle eine Pseudospalte wie "LEVEL"?
Wenn nicht, wie können wir eine Spalte ähnlich "LEVEL" erstellen?

    
Neha 25.03.2014, 05:49
quelle

3 Antworten

12

Postgres hat keine hierarchischen Abfragen . Kein CONNECT BY , also auch kein LEVEL .

Das zusätzliche Modul tablefunc stellt die Funktion connetby() zur Verfügung fast das gleiche. Siehe:

Oder Sie können ähnliche Dinge mit einem standardmäßigen rekursiven CTE und einem% co_de tun % Spalte, die bei jeder Rekursion erhöht wird.
Diese Abfrage in Oracle:

%Vor%

.. kann zu diesem rekursiven CTE in Postgres übersetzt werden:

%Vor%     
Erwin Brandstetter 25.03.2014 06:46
quelle
2

Die Funktionalität, die Sie mit Verbinden mit , Beginnt mit und einem level Indikator verwenden, ist verfügbar, wenn Sie tablefunc Erweiterung in Postgres. Die Syntax ist etwas anders, aber wenn Sie connect by von oracle verstehen, werden Sie dies in ungefähr 90 Sekunden abholen. Es ist großartig und hat meinen Speck gerettet, als ich ein Orakelsystem in ein Postgres-System umgewandelt habe.

Ich habe alle Details zu einer ähnlichen Frage gegeben.
Stackoverflow Connect Nach Antwort

    
Stradas 15.06.2016 21:46
quelle
0

Ja, Postgres unterstützt "LEVEL" wie Oracle.

Aber wie die anderen Antworten darauf hinweisen, müssen Sie die Erweiterung tablefunc laden.

Wenn Sie Administratorzugriff auf Ihre Postgres-Datenbank haben, können Sie sie mit folgendem laden:

CREATE EXTENSION IF NOT EXISTS tablefunc;

Weitere Informationen finden Sie in den Dokumenten

Ссылка

Hier ist ein Beispiel aus dem echten Leben von connectby aus einer unserer Apps. Wir verwenden es, um alle Personen zu finden, die über ihren Berichtsbaum an einen Manager berichten.

%Vor%

Und es gibt Ergebnisse wie folgt zurück. Hier können Sie die Ebene und auch die gesamte Hierarchie als String sehen.

%Vor%     
mthorley 15.06.2017 20:47
quelle