PostgreSQL

PostgreSQL UNNEST-Beispiele

PostgreSQL UNNEST-Beispiele
Sie können eine Spalte in PostgreSQL nur als Array geeigneter Datentypen angeben. Eingebaute, benutzerspezifische und unveräußerliche Datentypen sind alle Möglichkeiten. Abgesehen davon sind Arrays in PostgreSQL sehr relevant. Sie haben über Arrays in PostgreSQL gelernt, einschließlich der Konstruktion, Abfrage und manchmal sogar Generierung von Arrays mit der ARRAY-Methode. Es gibt jedoch Zeiten, in denen ich das Gegenteil tun und ein PostgreSQL-Array in Zeilen konvertieren möchte. Es gibt viele Gründe, warum Sie dies tun möchten. Angenommen, Sie suchen für eine Weile nach der Verbindung zweier Arrays. In PostgreSQL kann der INTERSECT-Operator dies effektiv für zwei verschiedene Sätze von Zeilen tun. Es gibt jedoch kein Gegenstück für Arrays. Ebenso verbindet der UNION-Operator 2 Zeilenpaare; jedoch gibt es nichts Vergleichbares für Arrays. Die UNNEST-Methode scheint das Geheimnis von all dem zu sein. Wenn Sie UNNEST konsumieren, müssen Sie vorsichtig sein, da PostgreSQL (wie bei den meisten Computersystemen) alles tun würde, was Sie ihm anweisen, nicht genau das, was Sie von ihm erwarten.

Um dieses Konzept vollständig auszuarbeiten, öffnen Sie die installierte Befehlszeilen-Shell von PostgreSQL in Ihrem System. Geben Sie den Servernamen, den Datenbanknamen, die Portnummer, den Benutzernamen und das Kennwort für den jeweiligen Benutzer an, wenn Sie nicht mit den Standardoptionen arbeiten möchten. Wenn Sie mit Standardparametern arbeiten möchten, lassen Sie jede Option leer und drücken Sie Enter every option. Jetzt ist Ihre Befehlszeilen-Shell bereit für die Arbeit.

Beispiel 01: Array-Typ-Daten definieren

Es ist eine gute Idee, die Grundlagen zu studieren, bevor Sie Array-Werte in der Datenbank ändern. So geben Sie eine Texttypliste an. Sie können sehen, dass die Ausgabe die Texttypliste mit der SELECT-Klausel angezeigt hat.

>> WÄHLEN SIE 'Aqsa, Raza, Saeed'::text[];

Die Art der Daten muss beim Schreiben einer Abfrage definiert werden. PostgreSQL erkennt den Datentyp nicht, wenn es sich um eine Zeichenfolge zu handeln scheint. Alternativ können wir das Format ARRAY[] verwenden, um es als Zeichenfolgentyp anzugeben, wie unten in der Abfrage gezeigt. Aus der unten zitierten Ausgabe können Sie sehen, dass die Daten mit der SELECT-Abfrage als Array-Typ abgerufen wurden.

>> ARRAY AUSWÄHLEN['Aqsa', 'Raza', 'Saeed'];

Wenn Sie die gleichen Array-Daten mit der SELECT-Abfrage auswählen, während Sie die FROM-Klausel verwenden, funktioniert es nicht so, wie es sollte. Versuchen Sie zum Beispiel die folgende Abfrage der FROM-Klausel in der Shell. Sie werden überprüfen, ob ein Fehler angezeigt wird. Dies liegt daran, dass die SELECT FROM-Klausel davon ausgeht, dass die abgerufenen Daten wahrscheinlich eine Gruppe von Zeilen oder einige Punkte aus einer Tabelle sind.

>> WÄHLE * AUS ARRAY ['Aqsa', 'Raza', 'Saeed'];

Beispiel 02: Array in Zeilen umwandeln

ARRAY[] ist eine Funktion, die einen atomaren Wert zurückgibt. Als Ergebnis passt es nur mit SELECT und nicht mit FROM-Klausel, da unsere Daten nicht in der 'Zeilen'-Form waren. Deshalb haben wir im obigen Beispiel einen Fehler bekommen. So verwenden Sie die UNNEST-Funktion, um die Arrays in Zeilen zu konvertieren, während Ihre Abfrage nicht mit der Klausel arbeitet.

>> UNNEST WÄHLEN (ARRAY['Aqsa', 'Raza', 'Saeed']);

Beispiel 03: Zeilen in Array umwandeln

Um die Zeilen wieder in ein Array umzuwandeln, müssen wir diese spezielle Abfrage innerhalb einer Abfrage definieren, um dies zu tun. Sie müssen hier die beiden SELECT-Abfragen verwenden. Eine interne Auswahlabfrage konvertiert ein Array mit der UNNEST-Funktion in Zeilen. Während die externe SELECT-Abfrage wieder alle diese Zeilen in ein einzelnes Array konvertiert, wie in der unten zitierten Abbildung gezeigt image. Achtung; Sie müssen in der externen SELECT-Abfrage kleinere Schreibweisen von 'array' verwenden.

>> SELECT array(SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Beispiel 04: Duplikate mit der DISTINCT-Klausel entfernen

DISTINCT kann Ihnen dabei helfen, Duplikate aus jeder Form von Daten zu extrahieren. Es erfordert jedoch unbedingt die Verwendung von Zeilen als Daten. Dies bedeutet, dass diese Methode für Ganzzahlen, Text, Gleitkommazahlen und andere Datentypen funktioniert, Arrays jedoch nicht zulässig sind. Um Duplikate zu entfernen, müssen Sie zuerst Ihre Array-Typdaten mit der UNNEST-Methode in Zeilen konvertieren. Danach werden diese konvertierten Datenzeilen an die DISTINCT-Klausel übergeben. Sie können einen Blick auf die Ausgabe unten werfen, dass das Array in Zeilen umgewandelt wurde, dann wurden nur die unterschiedlichen Werte aus diesen Zeilen mit der DISTINCT-Klausel abgerufen.

>> DISTINCT UNNEST WÄHLEN( 'Aqsa, Raza, Saeed, Raza, Uzma, Aqsa'::text[]);

Wenn Sie ein Array als Ausgabe benötigen, verwenden Sie die Funktion array() in der ersten SELECT-Abfrage und verwenden Sie die DISTINCT-Klausel in der nächsten SELECT-Abfrage. Sie können aus dem angezeigten Bild erkennen, dass die Ausgabe in der Array-Form angezeigt wurde, nicht in der Zeile. Während die Ausgabe nur unterschiedliche Werte enthält.

>> SELECT array( SELECT DISTINCT UNNEST('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa'::text[]));

Beispiel 05: Entfernen von Duplikaten bei Verwendung der ORDER BY-Klausel

Sie können auch die doppelten Werte aus dem Float-Typ-Array entfernen, wie unten gezeigt. Zusammen mit der eindeutigen Abfrage verwenden wir die ORDER BY-Klausel, um das Ergebnis in der Sortierreihenfolge eines bestimmten Werts zu erhalten. Versuchen Sie dazu die unten angegebene Abfrage in der Befehlszeilen-Shell.

>> DISTINCT UNNEST WÄHLEN( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ) ORDER BY 1;

Zuerst wurde das Array mit der UNNEST-Funktion in Zeilen umgewandelt; dann werden diese Zeilen in aufsteigender Reihenfolge sortiert, indem die ORDER BY-Klausel verwendet wird, wie unten gezeigt.

Um die Zeilen wieder in ein Array zu konvertieren, verwenden Sie dieselbe SELECT-Abfrage in der Shell, während Sie sie mit einer kleinen alphabetischen array()-Funktion verwenden. Sie können einen Blick auf die Ausgabe unten werfen, dass das Array zuerst in Zeilen umgewandelt wurde, dann wurden nur die einzelnen Werte ausgewählt. Endlich werden Zeilen wieder in ein Array umgewandelt.

>> SELECT array( SELECT DISTINCT UNNEST( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ));

Fazit:

Schließlich haben Sie jedes Beispiel aus diesem Leitfaden erfolgreich umgesetzt. Wir hoffen, dass Sie bei der Ausführung der Methoden UNNEST(), DISTINCT und array() in den Beispielen keine Probleme haben.

Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...
So ändern Sie die linke und rechte Maustaste auf einem Windows 10-PC
Es ist ganz normal, dass alle Computer-Maus-Geräte ergonomisch für Rechtshänder gestaltet sind. Es gibt aber auch Mausgeräte, die speziell für Linkshä...
Emulieren Sie Mausklicks, indem Sie den Mauszeiger mit der klicklosen Maus in Windows 10 bewegen
Die Verwendung einer Maus oder Tastatur in der falschen Haltung bei übermäßiger Nutzung kann zu vielen gesundheitlichen Problemen führen, einschließli...