PostgreSQL

PostgreSQL UNNEST Eksempler

PostgreSQL UNNEST Eksempler
Du kan spesifisere en kolonne i PostgreSQL som bare en rekke passende typer data. Innebygde, brukerdefinerte og umistelige datatyper er alle muligheter. Bortsett fra det, er matriser veldig relevante i PostgreSQL. Du har lært om arrays i PostgreSQL, inkludert hvordan du konstruerer, spørrer og noen ganger til og med genererer arrays med ARRAY-metoden. Imidlertid er det tider når jeg vil gjøre omvendt og konvertere en PostgreSQL-matrise til rader. Det er mange årsaker til at du vil gjøre dette. La oss si at du leter etter krysset mellom to matriser for en stund. I PostgreSQL kan INTERSECT-operatøren effektivt gjøre dette i to forskjellige sett med rader. Imidlertid er det ingen motstykke til arrays. På samme måte blir UNION-operatøren sammen med to par rader; det er imidlertid ingenting som kan sammenlignes med matriser. UNNEST-metoden ser ut til å være hemmeligheten bak alt dette. Mens du bruker UNNEST, må du være forsiktig siden PostgreSQL (som med de fleste datasystemer) vil gjøre alt du instruerer den om å gjøre, ikke akkurat hva du vil at den skal gjøre.

For å utdype dette konseptet fullt ut, åpne det installerte kommandolinjeskallet til PostgreSQL i systemet ditt. Oppgi servernavnet, databasenavnet, portnummeret, brukernavnet og passordet til den bestemte brukeren hvis du ikke vil begynne å jobbe med standardalternativene. Hvis du vil jobbe med standardparametere, la hvert alternativ være tomt og trykk Enter hvert alternativ. Nå er kommandolinjeskallet forberedt på å jobbe videre.

Eksempel 01: Definer Array Type Data

Det er en god ide å studere det grunnleggende før du går videre til å endre arrayverdier i databasen. Her er måten å spesifisere en teksttypeliste på. Du kan se at utdataene har vist teksttypelisten ved hjelp av SELECT-setningen.

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

Datatypen må defineres mens du skriver et spørsmål. PostgreSQL gjenkjenner ikke typen data hvis det ser ut til å være en streng. Alternativt kan vi bruke ARRAY [] -formatet til å spesifisere det som strengtype, som vist vedlagt nedenfor i spørringen. Fra utdataene som er sitert nedenfor, kan du se at dataene er hentet som arraytype ved hjelp av SELECT-spørringen.

>> VELG ARRAY ['Aqsa', 'Raza', 'Saeed'];

Når du velger de samme matardataene med SELECT-spørringen mens du bruker FROM-setningen, fungerer den ikke som den skal. Prøv for eksempel spørringen nedenfor om FROM-ledd i skallet. Du vil sjekke at det kommer opp med en feil. Dette er fordi SELECT FROM-setningen antar at dataene den henter sannsynligvis er en gruppe med 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 FROM-setningen, da dataene våre ikke var i 'rad' -formen. Det er derfor vi fikk en feil i eksemplet ovenfor. Slik bruker du UNNEST-funksjonen til å konvertere matriser i rader mens spørringen din ikke fungerer med setningen.

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

Eksempel 03: Konverter rader til matrise

For å konvertere radene til en matrise igjen, må vi definere det aktuelle spørringen i et spørsmål for å gjøre det. Du må bruke de to SELECT-spørsmålene her. Et internt søkeord konverterer en matrise til rader ved hjelp av UNNEST-funksjonen. Mens den eksterne SELECT-spørringen igjen konverterer alle disse radene til en enkelt matrise, som vist på bildet sitert nedenfor. Pass på; du må bruke mindre stavemåter av 'array' i den eksterne SELECT-spørringen.

>> VELG matrise (VELG UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Eksempel 04: Fjern duplikater ved hjelp av DISTINCT-klausul

DISTINCT kan hjelpe deg med å hente duplikater fra alle former 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 dataene til matrixtypen til rader ved hjelp av UNNEST-metoden. Etter det blir disse konverterte dataradene overført til DISTINCT-setningen. Du kan få et glimt av utdataene nedenfor, at matrisen er konvertert til rader, så er bare de forskjellige verdiene fra disse radene hentet ved hjelp av DISTINCT-setningen.

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

Hvis du trenger en matrise som utdata, bruk array () -funksjonen i den første SELECT-spørringen og bruk DISTINCT-setningen i neste SELECT-spørring. Du kan se fra det viste bildet at utdataene er vist i matriseformen, ikke i raden. Mens utdata bare inneholder forskjellige verdier.

>> VELG matrise (VELG DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []));

Eksempel 05: Fjern duplikater mens du bruker ORDER BY-klausul

Du kan også fjerne duplikatverdiene fra flottortypen, som vist nedenfor. Sammen med den distinkte spørringen, bruker vi ORDER BY-setningen for å få resultatet i sorteringsrekkefølgen til en bestemt verdi. Prøv spørringen nedenfor i kommandolinjeskallet for å gjøre det.

>> VELG DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) BESTILL AV 1;

Først er matrisen konvertert til rader ved hjelp av UNNEST-funksjonen; deretter vil disse radene bli sortert i stigende rekkefølge ved å bruke ORDER BY-setningen som vist nedenfor.

For å konvertere radene igjen til en matrise, bruk den samme SELECT-spørringen i skallet mens du bruker den med en liten alfabetisk matrise () -funksjon. Du kan se på utdataene nedenfor at matrisen først ble konvertert til rader, så bare de forskjellige verdiene er valgt. Til slutt vil rader konverteres til en matrise igjen.

>> VELG matrise (VELG DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: flyte []));

Konklusjon:

Til slutt har du vellykket implementert hvert eksempel fra denne guiden. Vi håper at du ikke har noen problemer når du utfører metoden UNNEST (), DISTINCT og array () i eksemplene.

Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...