PostgreSQL

PostgreSQL UNNEST -esimerkkejä

PostgreSQL UNNEST -esimerkkejä
Voit määrittää sarakkeen PostgreSQL: ssä vain joukoksi sopivia tietotyyppejä. Sisäänrakennetut, käyttäjän määrittelemät ja luovuttamattomat tietotyypit ovat kaikki mahdollisuuksia. Sen lisäksi taulukot ovat erittäin merkityksellisiä PostgreSQL: ssä. Olet oppinut matriiseista PostgreSQL: ssä, mukaan lukien taulukoiden rakentaminen, kysely ja joskus jopa generointi ARRAY-menetelmällä. On kuitenkin aikoja, jolloin haluan tehdä päinvastaisen ja muuntaa PostgreSQL-taulukon riveiksi. On monia syitä, miksi haluat tehdä tämän. Oletetaan jonkin aikaa, että etsit kahden matriisin risteystä. PostgreSQL: ssä INTERSECT-operaattori voi tehdä tämän tehokkaasti kahdelle eri riviryhmälle. Matriiseille ei kuitenkaan ole vastaavaa. Samoin UNION-operaattori yhdistää 2 paria rivejä; matriiseilla ei kuitenkaan ole mitään vastaavaa. UNNEST-menetelmä näyttää olevan tämän kaiken salaisuus. UNNESTin käytön aikana sinun on noudatettava varovaisuutta, koska (kuten useimmissa tietokonejärjestelmissä) PostgreSQL tekisi kaiken, mitä käskit sen tekemiseen, ei tarkalleen mitä haluat sen tekevän.

Voit kehittää tämän konseptin kokonaan avaamalla järjestelmässäsi asennetun PostgreSQL: n komentorivikuoren. Anna palvelimen nimi, tietokannan nimi, portin numero, käyttäjänimi ja salasana tietylle käyttäjälle, jos et halua aloittaa työskentelyä oletusasetusten kanssa. Jos haluat käyttää oletusparametreja, jätä kaikki vaihtoehdot tyhjiksi ja paina Enter every option. Nyt komentorivisi kuori on valmis työskentelemään.

Esimerkki 01: Määritä taulukon tyypin tiedot

On hyvä tutkia perusteet, ennen kuin siirryt matriisiarvojen muokkaamiseen tietokannassa. Tässä on tapa määrittää tekstityyppiluettelo. Näet, että tulosteen tekstityyppiluettelo on käytetty käyttämällä SELECT-lauseketta.

>> VALITSE 'Aqsa, Raza, Saeed' :: teksti [];

Tietotyyppi on määriteltävä kyselyä kirjoitettaessa. PostgreSQL ei tunnista tietotyyppiä, jos se näyttää olevan merkkijono. Vaihtoehtoisesti voimme käyttää ARRAY [] -muotoa sen määrittämiseksi merkkijonotyypiksi, kuten kyselyn alla on esitetty. Alla mainitusta lähdöstä näet, että tiedot on haettu taulukotyyppinä käyttämällä SELECT-kyselyä.

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

Kun valitset saman taulukotiedot SELECT-kyselyn kanssa käytettäessä FROM-lauseketta, se ei toimi niin kuin sen pitäisi. Kokeile esimerkiksi seuraavaa FROM-lausekkeen kyselyä kuoressa. Tarkista, että siinä on virhe. Tämä johtuu siitä, että SELECT FROM -lauseke olettaa, että sen hakemat tiedot ovat todennäköisesti rivejä tai joitain pisteitä taulukosta.

>> SELECT * FROM ARRAY ['Aqsa', 'Raza', 'Saeed'];

Esimerkki 02: Muunna taulukko riveiksi

ARRAY [] on funktio, joka palauttaa atomiarvon. Seurauksena on, että se sopii vain SELECT-valikkoon eikä FROM-lauseeseen, koska tietomme eivät olleet 'rivi' -muodossa. Siksi saimme virheen yllä olevassa esimerkissä. Tällöin UNNEST-funktiolla voit muuntaa taulukot riveiksi, kun kysely ei toimi lausekkeen kanssa.

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

Esimerkki 03: Muunna rivit taulukkoon

Jos haluat muuntaa rivit uudelleen matriisiksi, meidän on määritettävä kyseinen kysely kyselyssä niin. Sinun on käytettävä kahta SELECT-kyselyä täällä. Sisäinen valintakysely muuntaa taulukon riveiksi UNNEST-funktiolla. Kun ulkoinen SELECT-kysely muuntaa jälleen kaikki nämä rivit yhdeksi taulukoksi, kuten alla mainitussa kuvassa näkyy. Varo; ulkoisessa SELECT-kyselyssä on käytettävä matriisin pienempiä kirjoitusasuja.

>> SELECT-taulukko (SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Esimerkki 04: Poista kaksoiskappaleet DISTINCT-lausekkeen avulla

DISTINCT voi auttaa sinua poimimaan kaksoiskappaleet kaikenlaisista tiedoista. Se edellyttää kuitenkin välttämättä rivien käyttöä datana. Tämä tarkoittaa, että tämä menetelmä toimii kokonaislukujen, tekstin, kelluvien ja muiden tietotyyppien kohdalla, mutta taulukoita ei sallita. Jos haluat poistaa kaksoiskappaleet, sinun on ensin muunnettava taulukotyyppiset tiedot riveiksi UNNEST-menetelmällä. Sen jälkeen nämä muunnetut tietorivit siirretään DISTINCT-lausekkeeseen. Voit vilkaista alla olevaa lähtöä, että taulukko on muunnettu riveiksi, sitten vain näiden rivien erilliset arvot on haettu DISTINCT-lausekkeen avulla.

>> SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: teksti []);

Jos tarvitset matriisia lähtöön, käytä array () -funktiota ensimmäisessä SELECT-kyselyssä ja käytä DISTINCT-lausetta seuraavassa SELECT-kyselyssä. Näytetystä kuvasta näet, että tulos on esitetty taulukon muodossa, ei rivillä. Vaikka tulos sisältää vain erilliset arvot.

>> SELECT-taulukko (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: teksti []));

Esimerkki 05: Poista kaksoiskappaleet ORDER BY -lauseketta käytettäessä

Voit myös poistaa päällekkäiset arvot float-tyyppisestä taulukosta alla olevan kuvan mukaisesti. Erillisen kyselyn lisäksi käytämme ORDER BY -lauseketta saadaksesi tuloksen tietyn arvon lajittelujärjestyksessä. Kokeile alla olevaa komentorivikuoren kyselyä.

>> SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: kelluva []) TILAA 1;

Ensinnäkin taulukko on muunnettu riveiksi UNNEST-toiminnolla; sitten nämä rivit lajitellaan nousevaan järjestykseen käyttämällä ORDER BY -lauseketta alla esitetyllä tavalla.

Jos haluat muuntaa rivit uudelleen matriisiksi, käytä samaa SELECT-kyselyä kuoressa, kun käytät sitä pienen aakkosjärjestyksen () kanssa. Voit vilkaista alla olevaa lähtöä, että taulukko on ensin muunnettu riveiksi, sitten on valittu vain erilliset arvot. Viimeinkin rivit muunnetaan uudelleen taulukoksi.

>> SELECT-taulukko (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: kelluva []));

Päätelmä:

Lopuksi olet toteuttanut kaikki tämän oppaan esimerkit onnistuneesti. Toivomme, että sinulla ei ole mitään ongelmia suoritettaessa UNNEST (), DISTINCT ja array () -menetelmää esimerkeissä.

Parhaat Linux-peliohjaimen kartoitussovellukset
Jos haluat pelata pelejä Linuxissa peliohjaimella tyypillisen näppäimistön ja hiiren syöttöjärjestelmän sijaan, on sinulle hyödyllisiä sovelluksia. Mo...
Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...