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.