Da biste u potpunosti razradili ovaj koncept, otvorite instaliranu ljusku naredbenog retka PostgreSQL-a u svom sustavu. Navedite ime poslužitelja, naziv baze podataka, broj porta, korisničko ime i lozinku za određenog korisnika ako ne želite početi raditi sa zadanim opcijama. Ako želite raditi sa zadanim parametrima, ostavite svaku opciju praznom i pritisnite Enter svaku opciju. Sada je vaša ljuska naredbenog retka spremna za rad.
Primjer 01: Definirajte podatke o vrsti niza
Dobra je ideja proučiti osnove prije nego što prijeđete na mijenjanje vrijednosti polja u bazi podataka. Ovdje je način određivanja popisa vrsta teksta. Možete vidjeti da je na izlazu prikazan popis vrsta teksta pomoću klauzule SELECT.
>> ODABERITE 'Aqsa, Raza, Saeed' :: text [];
Za vrijeme pisanja upita mora se definirati vrsta podataka. PostgreSQL neće prepoznati vrstu podataka ako se čini da je niz. Alternativno, mogli bismo koristiti format ARRAY [] da bismo ga odredili kao vrstu niza, kao što je prikazano u nastavku u upitu. Iz dolje navedenog izlaza možete vidjeti da su podaci dohvaćeni kao vrsta polja pomoću upita SELECT.
>> ODABERI NIZ [[Aqsa ',' Raza ',' Saeed '];
Kada odaberete isti niz podataka s upitom SELECT dok koristite klauzulu FROM, to neće funkcionirati onako kako bi trebalo. Na primjer, isprobajte donji upit klauzule FROM u ljusci. Provjerit ćete da li će se pojaviti pogreška. To je zato što klauzula SELECT FROM pretpostavlja da su podaci koje dohvaća vjerojatno skupina redaka ili neke točke iz tablice.
>> ODABERI * IZ NIZA ['Aqsa', 'Raza', 'Saeed'];
Primjer 02: Pretvori niz u retke
ARRAY [] je funkcija koja vraća atomsku vrijednost. Kao rezultat, odgovara samo klauzuli SELECT, a ne i klauzuli FROM, jer naši podaci nisu bili u obrascu 'row'. Zbog toga smo dobili pogrešku u gornjem primjeru. Evo kako koristiti funkciju UNNEST za pretvaranje nizova u redove dok vaš upit ne radi s klauzulom.
>> ODABERITE NENEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);
Primjer 03: Pretvaranje redaka u niz
Da bismo redove ponovno pretvorili u niz, moramo definirati taj određeni upit unutar upita da bismo to učinili. Ovdje morate upotrijebiti dva SELECT upita. Interni upit za odabir pretvara niz u retke pomoću funkcije UNNEST. Dok vanjski SELECT upit ponovno pretvara sve te retke u jedan niz, kao što je prikazano na dolje navedenoj slici. Pazi; morate koristiti manji pravopis "polja" u vanjskom SELECT upitu.
>> SELECT niz (SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));
Primjer 04: Uklonite duplikate pomoću klauzule DISTINCT
DISTINCT vam može pomoći u izdvajanju duplikata iz bilo kojeg oblika podataka. Međutim, nužno zahtijeva upotrebu redaka kao podataka. To znači da ova metoda radi za cijele brojeve, tekst, plutajuće i druge vrste podataka, ali nizovi nisu dopušteni. Da biste uklonili duplikate, prvo morate pretvoriti podatke o vrsti niza u retke metodom UNNEST. Nakon toga, ovi pretvoreni retci podataka proslijedit će se u klauzulu DISTINCT. Možete pogledati izlaz ispod, da je niz pretvoren u retke, tada su dohvaćene samo različite vrijednosti iz ovih redaka pomoću klauzule DISTINCT.
>> ODABERITE RAZLIKUJUĆE GNIJESTE ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []);
Ako vam je kao izlaz potreban niz, upotrijebite funkciju array () u prvom SELECT upitu i upotrijebite DISTINCT klauzulu u sljedećem SELECT upitu. Iz prikazane slike možete vidjeti da je izlaz prikazan u obliku polja, a ne u retku. Iako izlaz sadrži samo različite vrijednosti.
>> SELECT niz (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []));
Primjer 05: Uklonite duplikate dok koristite klauzulu ORDER BY
Također možete ukloniti dvostruke vrijednosti iz niza plutajućeg tipa, kao što je prikazano u nastavku. Zajedno s zasebnim upitom, koristit ćemo klauzulu ORDER BY da bismo dobili rezultat u redoslijedu sortiranja određene vrijednosti. Isprobajte dolje navedeni upit u ljusci naredbenog retka da biste to učinili.
>> ODABERITE RAZLIKUJUĆE GNIJESTE ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) NARUČI DO 1;Prvo je niz pretvoren u redove pomoću funkcije UNNEST; tada će se ovi redovi sortirati u uzlaznom redoslijedu pomoću klauzule ORDER BY kako je prikazano u nastavku.
Da biste redove ponovno pretvorili u niz, upotrijebite isti SELECT upit u ljusci dok ga koristite s malom abecednom funkcijom polja (). Na donjem izlazu možete baciti pogled da je niz prvo pretvoren u retke, a zatim su odabrane samo različite vrijednosti. Napokon će se redovi ponovno pretvoriti u niz.
>> SELECT niz (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []));
Zaključak:
Napokon, uspješno ste implementirali svaki primjer iz ovog vodiča. Nadamo se da niste imali problema tijekom izvođenja metode UNNEST (), DISTINCT i array () u primjerima.