PostgreSQL

PostgreSQL UNNEST piemēri

PostgreSQL UNNEST piemēri
Jūs varat norādīt kolonnu PostgreSQL kā tikai atbilstoša veida datu masīvu. Visas iespējas ir iebūvēti, lietotāja norādīti un neatsavināmi datu veidi. Bez tam, masīvi ir ļoti svarīgi PostgreSQL. Jūs esat iemācījies par masīviem PostgreSQL, tostarp par to, kā veidot, pieprasīt un dažreiz pat ģenerēt masīvus ar ARRAY metodi. Tomēr ir gadījumi, kad es gribētu rīkoties pretēji un pārveidot PostgreSQL masīvu rindās. Ir daudzi iemesli, kāpēc jūs vēlaties to darīt. Kādu laiku pieņemsim, ka jūs meklējat divu masīvu savienojumu. PostgreSQL operētājsistēma INTERSECT to var efektīvi izdarīt divām dažādām rindu kopām. Tomēr masīviem nav atbilstoša. Tāpat UNION operators apvieno 2 rindu pārus; tomēr masīviem nav nekā līdzīga. Šķiet, ka UNNEST metode ir tā visa noslēpums. Patērējot UNNEST, jums jāievēro piesardzība, jo (tāpat kā lielākajā daļā datorsistēmu) PostgreSQL darītu visu, ko jūs uzdodat, nevis tieši to, ko vēlaties darīt.

Lai pilnībā izstrādātu šo koncepciju, atveriet sistēmā instalēto PostgreSQL komandrindas apvalku. Norādiet servera nosaukumu, datu bāzes nosaukumu, porta numuru, lietotājvārdu un paroli konkrētam lietotājam, ja nevēlaties sākt strādāt ar noklusējuma opcijām. Ja vēlaties strādāt ar noklusējuma parametriem, atstājiet katru opciju tukšu un nospiediet Enter all option. Tagad jūsu komandrindas apvalks ir gatavs strādāt.

01. piemērs: definējiet masīva tipa datus

Pirms pāriet uz masīva vērtību pārveidošanu datu bāzē, ieteicams izpētīt pamatus. Šeit ir veids, kā norādīt teksta veidu sarakstu. Varat redzēt, ka izvade ir parādījusi teksta veidu sarakstu, izmantojot klauzulu SELECT.

>> ATLASĪT 'Aqsa, Raza, Saeed' :: teksts [];

Datu tips ir jādefinē, rakstot vaicājumu. PostgreSQL neatpazīs datu veidu, ja šķiet, ka tā ir virkne. Varat arī izmantot formātu ARRAY [], lai to norādītu kā virknes tipu, kā parādīts vaicājuma pielikumā. No zemāk minētās izejas jūs varat redzēt, ka dati ir iegūti kā masīva tips, izmantojot vaicājumu SELECT.

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

Atlasot tos pašus masīva datus ar vaicājumu SELECT, izmantojot klauzulu FROM, tas nedarbojas tā, kā vajadzētu. Piemēram, izmēģiniet zemāk esošo vaicājumu FROM klauzulā. Jūs pārbaudīsit, vai tajā parādīsies kļūda. Tas ir tāpēc, ka klauzula SELECT FROM pieņem, ka dati, kurus tā iegūst, iespējams, ir rindu grupa vai daži tabulas punkti.

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

02. piemērs: Konvertēt masīvu rindās

ARRAY [] ir funkcija, kas atgriež atomu vērtību. Rezultātā tas der tikai klauzulai SELECT, nevis klauzulai FROM, jo mūsu dati nebija formā “rinda”. Tāpēc mēs saņēmām kļūdu iepriekš minētajā piemērā. Lūk, kā izmantot funkciju UNNEST, lai pārveidotu masīvus rindās, kamēr vaicājums nedarbojas ar klauzulu.

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

03. piemērs: Konvertēt rindas masīvā

Lai atkal pārveidotu rindas masīvā, mums tas jādefinē konkrētais vaicājums vaicājumā. Šeit jums jāizmanto divi SELECT vaicājumi. Iekšējais atlases vaicājums pārveido masīvu rindās, izmantojot funkciju UNNEST. Kamēr ārējais SELECT vaicājums atkal pārveido visas šīs rindas vienā masīvā, kā parādīts zemāk citētajā attēlā. Uzmanies; ārējā SELECT vaicājumā jāizmanto mazākas “masīva” rakstības.

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

04. Piemērs: Dublikātu noņemšana, izmantojot DISTINCT klauzulu

DISTINCT var palīdzēt jums iegūt dublikātus no jebkura veida datiem. Tomēr tas obligāti prasa rindu izmantošanu kā datus. Tas nozīmē, ka šī metode darbojas veseliem skaitļiem, tekstam, pludiņiem un citiem datu tipiem, taču masīvi nav atļauti. Lai noņemtu dublikātus, vispirms jāpārvērš masīva tipa dati rindās, izmantojot metodi UNNEST. Pēc tam šīs konvertētās datu rindas tiks nodotas klauzulai DISTINCT. Jūs varat ieskatīties zemāk redzamajā izvadē, ka masīvs ir pārveidots par rindām, pēc tam, izmantojot klauzulu DISTINCT, ir iegūtas tikai atšķirīgās vērtības no šīm rindām.

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

Ja jums ir nepieciešams masīvs kā izvads, izmantojiet masīva () funkciju pirmajā SELECT vaicājumā un izmantojiet klauzulu DISTINCT nākamajā SELECT vaicājumā. No parādītā attēla var redzēt, ka izvade ir parādīta masīva formā, nevis rindā. Lai gan izvade satur tikai atšķirīgas vērtības.

>> SELECT masīvs (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: teksts []));

05. piemērs: noņemot dublikātus, izmantojot klauzulu ORDER BY

Varat arī noņemt dublētās vērtības no pludiņa tipa masīva, kā parādīts zemāk. Kopā ar atšķirīgo vaicājumu mēs izmantosim klauzulu ORDER BY, lai rezultātu iegūtu noteiktas vērtības šķirošanas secībā. Lai to izdarītu, izmēģiniet zemāk norādīto vaicājumu komandrindas čaulā.

>> SELECT DISTINCT UNNEST ('2,85, 2.73., 2. lpp.85, 1.8, 2.73 ':: pludiņš []) PASŪTĪT AR 1;

Pirmkārt, masīvs ir pārveidots rindās, izmantojot funkciju UNNEST; tad šīs rindas tiks sakārtotas augošā secībā, izmantojot klauzulu ORDER BY, kā parādīts zemāk.

Lai atkal pārveidotu rindas masīvā, izmantojiet to pašu SELECT vaicājumu čaulā, vienlaikus izmantojot to ar nelielu alfabētiskā masīva () funkciju. Zemāk esošajā izvadā varat skatīties, ka masīvs vispirms ir pārveidots par rindām, pēc tam ir izvēlētas tikai atšķirīgās vērtības. Beidzot rindas atkal tiks pārveidotas par masīvu.

>> SELECT masīvs (SELECT DISTINCT UNNEST ('2,85, 2.73., 2. lpp.85, 1.8, 2.73 ':: pludiņš []));

Secinājums:

Visbeidzot, jūs esat veiksmīgi ieviesis visus šīs rokasgrāmatas piemērus. Mēs ceram, ka jums nav radušās problēmas, veicot UNNEST (), DISTINCT un array () metodi piemēros.

5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...
Cīņa par Vesnotu 1.13.6 Izlaista attīstība
Cīņa par Vesnotu 1.13.6 izlaists pagājušajā mēnesī, ir sestais izstrādes izlaidums 1.13.x sērija un tā nodrošina vairākus uzlabojumus, īpaši lietotāja...
Kā instalēt League of Legends operētājsistēmā Ubuntu 14.04
Ja jūs esat League of Legends fans, tad šī ir iespēja jums izmēģināt League of Legends. Ņemiet vērā, ka LOL tiek atbalstīts PlayOnLinux, ja esat Linux...