Selle kontseptsiooni täielikuks väljatöötamiseks avage oma süsteemis PostgreSQL-i installitud käsurea kest. Sisestage konkreetse kasutaja jaoks serveri nimi, andmebaasi nimi, pordi number, kasutajanimi ja parool, kui te ei soovi vaikevalikutega tööle asuda. Kui soovite töötada vaikeparameetritega, jätke kõik valikud tühjaks ja vajutage sisestage kõik valikud. Nüüd on teie käsurea kest valmis töötama.
Näide 01: määratlege massiivi tüübi andmed
Enne andmebaasis olevate massiiviväärtuste muutmist on mõistlik uurida põhialuseid. Siin on viis tekstitüüpide loendi määramiseks. Näete, et väljundis on näidatud tekstitüüpide loend, kasutades klahvi SELECT.
>> VALI 'Aqsa, Raza, Saeed' :: tekst [];
Päringu kirjutamise ajal tuleb määratleda andmete tüüp. PostgreSQL ei tunnista andmete tüüpi, kui see näib olevat string. Teise võimalusena võime kasutada stringi tüübiks määramiseks vormingut ARRAY [], nagu on näidatud allpool päringus. Allpool viidatud väljundist näete, et andmed on massibi tüübina toodud SELECT päringu abil.
>> VALI ARRAY ['Aqsa', 'Raza', 'Saeed'];
Kui valite klausli FROM kasutamise ajal sama massiivi andmed päringuga SELECT, ei tööta see nii, nagu peaks. Näiteks proovige allpool päringut FROM-i klauslist. Te kontrollite, kas sellega kaasneb viga. Seda seetõttu, et klausel SELECT FROM eeldab, et andmed, mida see hangib, on tõenäoliselt ridade rühm või mõni punkt tabelist.
>> SELECT * FROM ARRAY ['Aqsa', 'Raza', 'Saeed'];
Näide 02: massiivi teisendamine ridadeks
ARRAY [] on funktsioon, mis tagastab aatomi väärtuse. Selle tulemusena sobib see ainult SELECTi, mitte klausliga FROM, kuna meie andmed ei olnud vormis „rida”. Sellepärast saime ülaltoodud näites vea. Funktsiooni UNNEST abil saate massiivid ridadeks teisendada, kui teie päring ei tööta klausliga.
>> VALI UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);
Näide 03: teisendage read massiiviks
Ridade uuesti massiiviks teisendamiseks peame selle jaoks päringus piiritlema selle konkreetse päringu. Siin peate kasutama kahte SELECT päringut. Sisemine valikupäring muudab massiivi ridadeks, kasutades funktsiooni UNNEST. Samal ajal kui väline SELECT päring teisendab kõik need read uuesti üheks massiiviks, nagu on näidatud allpool viidatud pildil. Vaata ette; välises SELECT päringus peate kasutama väiksemaid õigekirja massiivi.
>> SELECT massiiv (SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));
Näide 04: Duplikaatide eemaldamine DISTINCT-klausli abil
DISTINCT aitab teil duplikaate välja võtta mis tahes vormis andmetest. Kuid see nõuab tingimata ridade kasutamist andmetena. See tähendab, et see meetod töötab täisarvude, teksti, ujukite ja muude andmetüüpide puhul, kuid massiivid pole lubatud. Duplikaatide eemaldamiseks peate kõigepealt teisendama oma massiivi tüübi andmed ridadeks, kasutades meetodit UNNEST. Pärast seda edastatakse need teisendatud andmeread klauslile DISTINCT. Allpool olevast väljundist saate pilgu heita, et massiiv on teisendatud ridadeks, seejärel on DISTINCT-klausli abil toodud ainult nendest ridadest erinevad väärtused.
>> SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []);
Kui vajate väljundina massiivi, kasutage esimese SELECT päringu funktsiooni array () ja kasutage järgmise SELECT päringu DISTINCT klauslit. Kuvatud pildilt näete, et väljundit on näidatud massiivivormis, mitte real. Kuigi väljund sisaldab ainult erinevaid väärtusi.
>> SELECT massiiv (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: tekst []));
Näide 05: Duplikaatide eemaldamine klausli ORDER BY kasutamisel
Samuti saate ujukitüübi massiivilt eemaldada duplikaatväärtused, nagu allpool näidatud. Koos erineva päringuga kasutame tulemust konkreetse väärtuse sortimisjärjekorras ORDER BY. Selleks proovige käsurea kestas allpool toodud päringut.
>> SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: ujuk []) TELLI 1;Esiteks on massiiv teisendatud ridadeks funktsiooni UNNEST abil; siis sorteeritakse need read kasvavas järjekorras, kasutades klauslit ORDER BY, nagu allpool näidatud.
Ridade uuesti massiiviks teisendamiseks kasutage kestas sama SELECT päringut, kui kasutate seda koos väikese tähestikulise massiivi () funktsiooniga. Võite heita pilgu allpool olevasse väljundisse, kui massiiv on kõigepealt teisendatud ridadeks, seejärel on valitud ainult erinevad väärtused. Lõpuks teisendatakse read uuesti massiiviks.
>> SELECT massiiv (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: ujuk []));
Järeldus:
Lõpuks olete selle juhendi kõik näited edukalt rakendanud. Loodame, et näidetes meetodite UNNEST (), DISTINCT ja array () täitmisel pole teil probleeme.