För att utarbeta detta koncept helt, öppna det installerade kommandoradsskalet av PostgreSQL i ditt system. Ange servernamn, databasnamn, portnummer, användarnamn och lösenord för den specifika användaren om du inte vill börja arbeta med standardalternativen. Om du vill arbeta med standardparametrar, lämna varje alternativ tomt och tryck på Enter varje alternativ. Nu är ditt kommandoradsskal beredd att arbeta på.
Exempel 01: Definiera arraytypsdata
Det är en bra idé att studera grunderna innan du går vidare till att ändra arrayvärden i databasen. Här är sättet att specificera en texttypslista. Du kan se att utdata har visat texttypslistan med SELECT-satsen.
>> VÄLJ 'Aqsa, Raza, Saeed' :: text [];
Typen av data måste definieras när du skriver en fråga. PostgreSQL känner inte igen typen av data om det verkar vara en sträng. Alternativt kan vi använda ARRAY [] -formatet för att ange det som strängtyp, som visas bifogat nedan i frågan. Från utdata som citeras nedan kan du se att data har hämtats som arraytyp med SELECT-frågan.
>> VÄLJ ARRAY ['Aqsa', 'Raza', 'Saeed'];
När du väljer samma arraydata med SELECT-frågan medan du använder FROM-satsen, fungerar den inte som den ska. Prova till exempel frågan nedan om FROM-sats i skalet. Du kommer att kontrollera att det kommer upp ett fel. Detta beror på att SELECT FROM-satsen antar att den data den hämtar troligen är en grupp av rader eller några punkter från en tabell.
>> VÄLJ * FRÅN ARRAY ['Aqsa', 'Raza', 'Saeed'];
Exempel 02: Konvertera matris till rader
ARRAY [] är en funktion som returnerar ett atomvärde. Som ett resultat passar det bara med SELECT och inte med FROM-satsen eftersom våra data inte fanns i "rad" -formen. Det är därför vi fick ett fel i exemplet ovan. Så här använder du funktionen UNNEST för att konvertera matriserna till rader medan din fråga inte fungerar med klausulen.
>> VÄLJ UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);
Exempel 03: Konvertera rader till matris
För att konvertera raderna till en array igen måste vi definiera den specifika frågan i en fråga för att göra det. Du måste använda de två SELECT-frågorna här. En intern markeringsfråga konverterar en matris till rader med funktionen UNNEST. Medan den externa SELECT-frågan åter konverterar alla dessa rader till en enda array, som visas i bilden som citeras nedan. Se upp; du måste använda mindre stavningar av 'array' i den externa SELECT-frågan.
>> VÄLJ matris (VÄLJ UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));
Exempel 04: Ta bort dubbletter med DISTINCT-klausul
DISTINCT kan hjälpa dig att extrahera dubbletter från alla typer av data. Det kräver dock nödvändigtvis användning av rader som data. Det betyder att den här metoden fungerar för heltal, text, floats och andra datatyper, men matriser är inte tillåtna. För att ta bort dubbletter måste du först konvertera din arraytypsdata till rader med UNNEST-metoden. Därefter skickas dessa konverterade datarader till DISTINCT-klausulen. Du kan få en glimt av utdata nedan, att matrisen har konverterats till rader, då har bara de olika värdena från dessa rader hämtats med hjälp av DISTINCT-satsen.
>> VÄLJ DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []);
Om du behöver en array som utdata, använd array () -funktionen i den första SELECT-frågan och använd DISTINCT-satsen i nästa SELECT-fråga. Du kan se från den visade bilden att utdata har visats i matrisform, inte i raden. Medan utdata endast innehåller distinkta värden.
>> SELECT array (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []));
Exempel 05: Ta bort dubbletter medan du använder ORDER BY-klausul
Du kan också ta bort de dubbla värdena från flottörtypen, som visas nedan. Tillsammans med den distinkta frågan kommer vi att använda ORDER BY-klausulen för att få resultatet i sorteringsordningen för ett specifikt värde. Försök med nedanstående fråga i kommandoradsskalet för att göra det.
>> VÄLJ DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) BESTÄLLNING AV 1;Först har matrisen konverterats till rader med funktionen UNNEST; sedan kommer dessa rader att sorteras i stigande ordning med ORDER BY-klausulen som visas nedan.
Om du vill konvertera raderna igen till en matris använder du samma SELECT-fråga i skalet medan du använder den med en liten alfabetisk array () -funktion. Du kan titta på utdata nedan att matrisen har konverterats till rader först, då har bara de olika värdena valts. Äntligen konverteras rader till en matris igen.
>> VÄLJ array (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: flyta []));
Slutsats:
Slutligen har du implementerat varje exempel från den här guiden. Vi hoppas att du inte har några problem när du utför UNNEST (), DISTINCT och array () -metoden i exemplen.