„PostgreSQL“

„PostgreSQL UNNEST“ pavyzdžiai

„PostgreSQL UNNEST“ pavyzdžiai
„PostgreSQL“ stulpelį galite nurodyti tik kaip tinkamų tipų duomenų masyvą. Visos galimybės yra integruoti, vartotojo nurodyti ir neatimami duomenų tipai. Be to, masyvai yra labai aktualūs „PostgreSQL“. Sužinojote apie masyvus „PostgreSQL“, įskaitant tai, kaip kurti, pateikti užklausas ir kartais netgi generuoti masyvus naudojant ARRAY metodą. Tačiau yra atvejų, kai norėčiau atlikti atvirkštinį variantą ir konvertuoti „PostgreSQL“ masyvą į eilutes. Yra daug priežasčių, kodėl norėtumėte tai padaryti. Kurį laiką tarkime, kad ieškote dviejų masyvų sandūros. „PostgreSQL“ operatorius INTERSECT gali tai efektyviai atlikti dviem skirtingais eilučių rinkiniais. Tačiau nėra masyvų atitikmens. Panašiai UNION operatorius sujungia 2 eilučių poras; tačiau masyvams nėra nieko panašaus. Atrodo, kad viso to paslaptis yra UNNEST metodas. Vartodami UNNEST, turite būti atsargūs, nes (kaip ir daugumoje kompiuterinių sistemų) „PostgreSQL“ darytų viską, ką nurodėte, o ne tiksliai tai, ko norite.

Norėdami išsiaiškinti šią koncepciją, atidarykite įdiegtą komandinės eilutės „PostgreSQL“ apvalkalą savo sistemoje. Pateikite serverio pavadinimą, duomenų bazės pavadinimą, prievado numerį, vartotojo vardą ir slaptažodį konkrečiam vartotojui, jei nenorite pradėti dirbti su numatytosiomis parinktimis. Jei norite dirbti su numatytaisiais parametrais, palikite kiekvieną parinktį tuščią ir paspauskite Enter all options. Dabar jūsų komandinės eilutės apvalkalas yra pasirengęs dirbti.

01 pavyzdys: apibrėžkite masyvo tipo duomenis

Prieš pereinant prie masyvo reikšmių duomenų bazėje, verta išstudijuoti pagrindus. Čia pateikiamas būdas nurodyti teksto tipų sąrašą. Galite matyti, kad išvestyje rodomas teksto tipų sąrašas, naudojant sąlygą „SELECT“.

>> PASIRINKTI 'Aqsa, Raza, Saeed' :: tekstas [];

Rašant užklausą reikia apibrėžti duomenų tipą. „PostgreSQL“ neatpažins duomenų tipo, jei atrodo, kad tai yra eilutė. Arba galime naudoti formatą ARRAY [], kad nurodytume jį kaip eilutės tipą, kaip parodyta žemiau užklausoje. Iš žemiau nurodytos išvesties galite pamatyti, kad duomenys buvo gauti kaip masyvo tipas, naudojant užklausą SELECT.

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

Kai naudodami sąlygą FROM pasirenkate tuos pačius masyvo duomenis su užklausa SELECT, jie neveikia taip, kaip turėtų. Pavyzdžiui, pabandykite žemiau pateiktą sakinio FROM užklausą apvalkale. Patikrinsite, ar jame bus klaida. Taip yra todėl, kad sąlygoje „SELECT FROM“ daroma prielaida, kad duomenys, kuriuos jis gauna, tikriausiai yra eilučių grupė arba kai kurie lentelės taškai.

>> PASIRINKTI * IŠ ARRAY ['Aqsa', 'Raza', 'Saeed'];

02 pavyzdys: Konvertuoti masyvą į eilutes

ARRAY [] yra funkcija, kuri pateikia atominę vertę. Todėl jis tinka tik su SELECT, o ne su sąlyga FROM, nes mūsų duomenys nebuvo „eilutės“ formoje. Štai kodėl mes gavome klaidą aukščiau pateiktame pavyzdyje. Štai kaip naudoti funkciją UNNEST konvertuoti masyvus į eilutes, kol jūsų užklausa neveikia su sąlyga.

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

03 pavyzdys: Konvertuokite eilutes į masyvą

Norėdami vėl konvertuoti eilutes į masyvą, turime tai padaryti apibrėždami konkrečią užklausą. Čia turite naudoti dvi SELECT užklausas. Vidinė pasirinkimo užklausa masyvą paverčia eilutėmis, naudodama funkciją UNNEST. Kol išorinė SELECT užklausa vėl paverčia visas tas eilutes į vieną masyvą, kaip parodyta toliau cituotame paveikslėlyje. Saugokis; išorinėje SELECT užklausoje turite naudoti mažesnes „masyvo“ rašybas.

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

04 pavyzdys: pašalinkite dublikatus naudodami sąlygą DISTINCT

„DISTINCT“ gali padėti išskleisti dublikatus iš bet kokios formos duomenų. Tačiau tam būtinai reikia naudoti eiles kaip duomenis. Tai reiškia, kad šis metodas tinka sveikiems skaičiams, tekstui, plūdėms ir kitiems duomenų tipams, tačiau masyvai neleidžiami. Norėdami pašalinti dublikatus, pirmiausia turite konvertuoti savo masyvo tipo duomenis į eilutes naudodami UNNEST metodą. Po to šios konvertuotos duomenų eilutės bus perduotos sąlygai DISTINCT. Galite pamatyti žemiau pateiktą išvestį, kad masyvas buvo paverstas eilutėmis, tada tik skirtingos šių eilučių vertės buvo gautos naudojant sąlygą DISTINCT.

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

Jei jums reikia masyvo kaip išvesties, naudokite masyvo () funkciją pirmojoje SELECT užklausoje ir DISTINCT sąlygą kitoje SELECT užklausoje. Iš rodomo vaizdo galite pamatyti, kad išvestis buvo rodoma masyvo formoje, o ne eilutėje. Nors išvestyje yra tik skirtingos vertės.

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

05 pavyzdys: pašalinkite dublikatus naudodami sąlygą „ORDER BY“

Taip pat galite pašalinti pasikartojančias vertes iš plūduriuojančio tipo masyvo, kaip parodyta žemiau. Kartu su aiškia užklausa naudosime sąlygą ORDER BY, kad gautume rezultatą pagal konkrečios vertės rūšiavimo tvarką. Norėdami tai padaryti, pabandykite žemiau nurodytą užklausą komandinės eilutės apvalkale.

>> SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: plūdė []) UŽSAKYTI 1;

Pirma, masyvas buvo paverstas eilutėmis naudojant funkciją UNNEST; tada šios eilutės bus rūšiuojamos didėjimo tvarka, naudojant sąlygą ORDER BY, kaip parodyta žemiau.

Norėdami vėl konvertuoti eilutes į masyvą, naudokite tą pačią SELECT užklausą apvalkale, naudodami ją su maža abėcėlės masyvo () funkcija. Galite žvilgtelėti į išvestį žemiau, kad masyvas pirmiausia buvo paverstas eilutėmis, tada buvo pasirinktos tik skirtingos vertės. Pagaliau eilutės vėl bus paverstos masyvu.

>> SELECT masyvas (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: plūdė []));

Išvada:

Galiausiai, jūs sėkmingai įgyvendinote kiekvieną šio vadovo pavyzdį. Tikimės, kad pavyzdžiuose atlikdami metodą UNNEST (), DISTINCT ir array () neturėjote problemų.

Geriausios „Linux“ skirtos „Gamepad“ žemėlapių sudarymo programos
Jei jums patinka žaisti žaidimus „Linux“ su žaidimų pultu, o ne įprasta klaviatūra ir pelės įvesties sistema, yra keletas jums naudingų programų. Daug...
Naudingi įrankiai „Linux“ žaidėjams
Jei jums patinka žaisti žaidimus „Linux“ sistemoje, yra tikimybė, kad galbūt naudojote tokias programas ir įrankius kaip „Wine“, „Lutris“ ir „OBS Stud...
„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...