PostgreSql Unnest Eksempler

PostgreSql Unnest Eksempler
Du kan spesifisere en kolonne i PostgreSQL som bare en rekke passende typer data. Innebygde, brukerspesifiserte og umistelige datatyper er alle muligheter. Bortsett fra det er matriser veldig relevante i PostgreSQL. Du har lært angående matriser i PostgreSQL, inkludert hvordan du konstruerer, spørring og noen ganger til og med genererer matriser med matrisemetoden. Imidlertid er det tider hvor jeg vil gjøre det motsatte og konvertere en postgreSQL -matrise til rader. Det er mange årsaker til hvorfor du vil gjøre dette. En stund, la oss si at du leter etter krysset mellom to matriser. I PostgreSQL kan den kryssende operatøren effektivt gjøre dette for to forskjellige sett med rader. Det er imidlertid ingen motstykke for matriser. På samme måte slutter unionsoperatøren seg til 2 par rader; Imidlertid er det ikke noe sammenlignbart for matriser. Unnest -metoden ser ut til å være hemmeligheten for alt dette. Mens du konsumerer Unnest, må du bruke forsiktig.

For å utdype dette konseptet fullt ut, åpne det installerte kommandolinjeskallet til PostgreSQL i systemet ditt. Oppgi servernavn, databasenavn, portnummer, brukernavn og passord for den aktuelle brukeren hvis du ikke vil begynne å jobbe med standardalternativene. Hvis du vil jobbe med standardparametere, må du la alle alternativene være tomt og trykk Enter hvert alternativ. Nå er kommandolinjeskallet ditt forberedt på å jobbe med.

Eksempel 01: Definer array -type data

Det er lurt å studere grunnleggende før du går videre til å endre matriseverdier i databasen. Her er måten å spesifisere en teksttype -liste. Du kan se at utdataene har vist teksttypelisten ved hjelp av SELECT -leddet.

>> Velg 'Aqsa, Raza, Saeed' :: tekst [];

Type data må defineres mens du skriver en spørring. PostgreSQL vil ikke gjenkjenne typen data hvis det ser ut til å være en streng. Alternativt kan vi bruke array [] -formatet for å spesifisere det som strengtype, som vist vedlagt nedenfor i spørringen. Fra utdata som er sitert nedenfor, kan du se at dataene er hentet som array -type ved hjelp av SELECT -spørringen.

>> Velg Array ['Aqsa', 'Raza', 'Saeed'];

Når du velger de samme array -dataene med SELECT -spørringen mens du bruker fra Clause, fungerer det ikke slik den skal. Prøv for eksempel spørringen nedenfor fra fra leddet i skallet. Du vil sjekke at det vil komme med en feil. Dette er fordi utvalget fra Clause antar at dataene den henter sannsynligvis er en gruppe rader eller noen punkter fra en tabell.

>> Velg * fra Array ['Aqsa', 'Raza', 'Saeed'];

Eksempel 02: Konverter matrise til rader

Array [] er en funksjon som returnerer en atomverdi. Som et resultat passer det bare med SELECT og ikke med fra klausul da dataene våre ikke var i "rad" -formen. Derfor fikk vi en feil i eksemplet ovenfor. Slik bruker du Unnest -funksjonen for å konvertere matriser til rader mens spørringen ikke fungerer med leddet.

>> Velg Unnest (Array ['Aqsa', 'Raza', 'Saeed']);

Eksempel 03: Konverter rader til matrise

For å konvertere radene til en matrise igjen, må vi definere den aktuelle spørringen i en spørring for å gjøre det. Du må bruke de to utvalgte spørsmålene her. En intern valgt spørring konverterer en matrise til rader ved hjelp av Unnest -funksjonen. Mens den eksterne utvalgte spørringen igjen konverterer alle disse radene til en enkelt matrise, som vist på bildet som er sitert nedenfor. Pass på; Du må bruke mindre stavemåter av 'matrise' i den eksterne SELECT -spørringen.

>> Velg Array (velg Unnest (Array ['Aqsa', 'Raza', 'Saeed']));

Eksempel 04: Fjern duplikater ved hjelp av distinkt klausul

Distinkt kan hjelpe deg med å trekke ut duplikater fra noen form for data. Imidlertid krever det nødvendigvis bruk av rader som data. Dette betyr at denne metoden fungerer for heltall, tekst, flyter og andre datatyper, men matriser er ikke tillatt. For å fjerne duplikater, må du først konvertere array -type data til rader ved hjelp av Unnest -metoden. Etter det vil disse konverterte dataradene bli sendt til den distinkte klausulen. Du kan ha et glimt av utdataene nedenfor, at matrisen er konvertert til rader, da er bare de distinkte verdiene fra disse radene blitt hentet ved hjelp av den distinkte leddet.

>> Velg distinkt unødvendig ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []);

Hvis du trenger en matrise som en utdata, bruk matrisefunksjonen () i den første SELECT -spørringen og bruk den distinkte leddet i neste Select Query. Du kan se fra det viste bildet at utgangen er vist i matriseformen, ikke i raden. Mens utgangen bare inneholder forskjellige verdier.

>> Velg Array (velg Distinct Unnest ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []));

Eksempel 05: Fjern duplikater mens du bruker orden etter klausul

Du kan også fjerne duplikatverdiene fra float -typen, som vist nedenfor. Sammen med den distinkte spørringen bruker vi ordren etter klausul for å få resultatet i sorteringens rekkefølge av en spesifikk verdi. Prøv den under-uttalte spørringen i kommandolinjeskallet for å gjøre det.

>> Velg distinkt Unnest ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) ordre med 1;

Først har matrisen blitt konvertert til rader ved bruk av Unnest -funksjonen; Deretter vil disse radene bli sortert i stigende rekkefølge ved å bruke ordren etter klausul som vist nedenfor.

For å konvertere radene igjen til en matrise, bruk den samme valgte spørringen i skallet mens du bruker den med en liten alfabetisk matrise () -funksjon. Du kan se på utdataene nedenfor at matrisen er konvertert til rader først, da er bare de distinkte verdiene valgt. Endelig vil rader bli konvertert til en matrise igjen.

>> Velg matrise (velg Distinct Unnest ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []));

Konklusjon:

Til slutt har du implementert alle eksempel fra denne guiden. Vi håper at du ikke har noe problem mens du utfører Unnest (), Distinct og Array () -metode i eksemplene.