PostgreSQL

PostgreSQL UNNEST Eksempler

PostgreSQL UNNEST Eksempler
Du kan angive en kolonne i PostgreSQL som bare en matrix af passende datatyper. Indbyggede, brugerdefinerede og umistelige datatyper er alle muligheder. Bortset fra det er arrays meget relevante i PostgreSQL. Du har lært om arrays i PostgreSQL, herunder hvordan man konstruerer, forespørger og undertiden endda genererer arrays med ARRAY-metoden. Der er dog tidspunkter, hvor jeg gerne vil gøre det omvendte og konvertere et PostgreSQL-array til rækker. Der er mange årsager til, at du gerne vil gøre dette. Lad os i et stykke tid sige, at du leder efter krydset mellem to arrays. I PostgreSQL kan INTERSECT-operatøren effektivt gøre dette i to forskellige sæt rækker. Der er dog ingen modstykke til arrays. På samme måde slutter UNION-operatøren sig til to par rækker; der er dog intet, der kan sammenlignes med arrays. UNNEST-metoden ser ud til at være hemmeligheden bag alt dette. Mens du bruger UNNEST, skal du være forsigtig, da (som med de fleste computersystemer) PostgreSQL ville gøre alt, hvad du instruerer det om at gøre, ikke præcis hvad du vil have det til at gøre.

For at uddybe dette koncept fuldt ud skal du åbne den installerede kommandolinjeskal af PostgreSQL i dit system. Angiv servernavnet, databasenavnet, portnummeret, brugernavnet og adgangskoden til den bestemte bruger, hvis du ikke vil begynde at arbejde med standardindstillingerne. Hvis du vil arbejde med standardparametre, skal du lade alle indstillinger være tomme og trykke på Enter hver indstilling. Nu er din kommandolinjeskal klar til at arbejde på.

Eksempel 01: Definer Array Type Data

Det er en god ide at studere det grundlæggende, inden du går videre til at ændre matrixværdier i databasen. Her er måden at specificere en teksttypeliste på. Du kan se, at output har vist teksttypelisten ved hjælp af SELECT-klausulen.

>> VÆLG 'Aqsa, Raza, Saeed' :: tekst [];

Datatypen skal defineres, mens du skriver en forespørgsel. PostgreSQL genkender ikke typen af ​​data, hvis det ser ud til at være en streng. Alternativt kan vi bruge ARRAY [] -formatet til at angive det som strengtype, som vist vedhæftet nedenfor i forespørgslen. Fra nedenstående output kan du se, at dataene er hentet som arraytype ved hjælp af SELECT-forespørgslen.

>> VÆLG ARRAY ['Aqsa', 'Raza', 'Saeed'];

Når du vælger de samme matrixdata med SELECT-forespørgslen, mens du bruger FROM-klausulen, fungerer det ikke som det skal. Prøv for eksempel nedenstående forespørgsel om FROM-klausul i skallen. Du vil kontrollere, at der kommer en fejl. Dette skyldes, at SELECT FROM-klausulen antager, at de data, den henter, sandsynligvis er en gruppe af rækker eller nogle punkter fra en tabel.

>> VÆLG * FRA ARRAY ['Aqsa', 'Raza', 'Saeed'];

Eksempel 02: Konverter Array til rækker

ARRAY [] er en funktion, der returnerer en atomværdi. Som et resultat passer det kun med SELECT og ikke med FROM-klausulen, da vores data ikke var i form af 'række'. Derfor fik vi en fejl i ovenstående eksempel. Sådan bruges UNNEST-funktionen til at konvertere arrays til rækker, mens din forespørgsel ikke fungerer med klausulen.

>> VÆLG UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);

Eksempel 03: Konverter rækker til matrix

For at konvertere rækkerne til en matrix igen skal vi definere den pågældende forespørgsel inden for en forespørgsel for at gøre det. Du skal bruge de to SELECT-forespørgsler her. En intern valgforespørgsel konverterer en matrix til rækker ved hjælp af funktionen UNNEST. Mens den eksterne SELECT-forespørgsel igen konverterer alle disse rækker til et enkelt array, som vist på billedet citeret nedenfor. Pas på; du skal bruge mindre stavemåder af 'array' i den eksterne SELECT-forespørgsel.

>> VÆLG matrix (VÆLG UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Eksempel 04: Fjern duplikater ved hjælp af DISTINCT-klausul

DISTINCT kan hjælpe dig med at udtrække duplikater fra enhver form for data. Det kræver dog nødvendigvis brugen af ​​rækker som data. Dette betyder, at denne metode fungerer for heltal, tekst, floats og andre datatyper, men arrays er ikke tilladt. For at fjerne dubletter skal du først konvertere dine arraytypedata til rækker ved hjælp af UNNEST-metoden. Derefter sendes disse konverterede datarækker til DISTINCT-klausulen. Du kan få et glimt af output nedenfor, at arrayet er blevet konverteret til rækker, så er kun de forskellige værdier fra disse rækker hentet ved hjælp af DISTINCT-klausulen.

>> VÆLG DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []);

Hvis du har brug for en matrix som output, skal du bruge array () -funktionen i den første SELECT-forespørgsel og bruge DISTINCT-klausulen i den næste SELECT-forespørgsel. Du kan se fra det viste billede, at output er vist i arrayformen, ikke i rækken. Mens output kun indeholder forskellige værdier.

>> VÆLG array (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []));

Eksempel 05: Fjern duplikater, mens du bruger ORDER BY-klausul

Du kan også fjerne de duplikerede værdier fra float-typen array, som vist nedenfor. Sammen med den forskellige forespørgsel bruger vi ORDER BY-klausulen til at få resultatet i sorteringsrækkefølgen af ​​en bestemt værdi. Prøv nedenstående forespørgsel i kommandolinjeskallen for at gøre det.

>> VÆLG DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) ORDER BY 1;

For det første er arrayet konverteret til rækker ved hjælp af UNNEST-funktionen; derefter vil disse rækker blive sorteret i stigende rækkefølge ved hjælp af ORDER BY-klausulen som vist nedenfor.

For at konvertere rækkerne igen til en matrix skal du bruge den samme SELECT-forespørgsel i skallen, mens du bruger den med et lille alfabetisk array () -funktion. Du kan se på output nedenfor, at arrayet først er konverteret til rækker, så kun de forskellige værdier er valgt. Endelig konverteres rækker til en matrix igen.

>> VÆLG array (VÆLG DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: flyde []));

Konklusion:

Endelig har du med succes implementeret hvert eksempel fra denne vejledning. Vi håber, at du ikke har noget problem, mens du udfører metoden UNNEST (), DISTINCT og array () i eksemplerne.

Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...
Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...