PostgreSQL

Példák a PostgreSQL UNNEST-re

Példák a PostgreSQL UNNEST-re
Megadhat egy oszlopot a PostgreSQL-ben, mint csak megfelelő típusú adattömböt. A beépített, a felhasználó által megadott és az elidegeníthetetlen adattípusok mind lehetőségek. Ezen kívül a tömbök nagyon fontosak a PostgreSQL-ben. Megtanulta a tömböket a PostgreSQL-ben, ideértve a tömbök létrehozását, lekérdezését és néha generálását is az ARRAY módszerrel. Vannak azonban esetek, amikor meg szeretném fordítani, és egy PostgreSQL tömböt sorokká konvertálni. Sok oka van annak, hogy miért szeretné ezt megtenni. Tegyük fel, hogy egy ideig két tömb találkozását keresi. A PostgreSQL-ben az INTERSECT operátor két különböző sorhalmazra képes ezt hatékonyan megtenni. A tömböknek azonban nincs megfelelője. Hasonlóképpen, az UNION operátora 2 pár sort köt össze; tömböknél azonban nincs semmi hasonló. Úgy tűnik, hogy mindennek az UNNEST módszer a titka. Az UNNEST használata közben körültekintően kell eljárnia, mivel (mint a legtöbb számítógépes rendszerben) a PostgreSQL bármit megtesz, amire utasítja, és nem pontosan azt, amit szeretne.

A koncepció teljes kidolgozásához nyissa meg a rendszerben a PostgreSQL telepített parancssori héját. Adja meg a kiszolgáló nevét, az adatbázis nevét, a portszámot, a felhasználónevet és a jelszót az adott felhasználó számára, ha nem akarja elkezdeni az alapértelmezett beállításokat. Ha alapértelmezett paraméterekkel szeretne dolgozni, hagyjon minden opciót üresen, és nyomja meg az Enter gombot. Most a parancssori shell felkészült a munkára.

01. példa: Adja meg a tömbtípus adatait

Célszerű tanulmányozni az alapokat, mielőtt továbblépnénk az adatbázis tömbértékeinek módosítására. Így adhat meg egy szövegtípus-listát. Láthatja, hogy a kimenet a SELECT záradék segítségével megmutatta a szövegtípusokat.

>> SELECT 'Aqsa, Raza, Saeed' :: szöveg [];

A lekérdezés írásakor meg kell határozni az adatok típusát. A PostgreSQL nem ismeri fel az adatok típusát, ha úgy tűnik, hogy karakterláncról van szó. Alternatív megoldásként használhatjuk az ARRAY [] formátumot a karakterlánc típusának megadásához, amint azt a lekérdezés alább mellékeltük. Az alábbiakban említett kimenetből láthatja, hogy az adatokat tömbtípusként lehívta a SELECT lekérdezés segítségével.

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

Ha a FROM záradék használata közben ugyanazt a tömbadatot választja a SELECT lekérdezéssel, akkor az nem úgy működik, ahogy kellene. Próbálkozzon például a FROM záradék alábbi lekérdezésével a shellben. Ellenőrizni fogja, hogy hibával áll-e elő. Ez azért van, mert a SELECT FROM záradék feltételezi, hogy az általa beolvasott adatok valószínűleg sorok vagy táblák egyes pontjai.

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

02. példa: Tömb konvertálása sorokká

Az ARRAY [] egy függvény, amely atomértéket ad vissza. Ennek eredményeként csak a SELECT-hez illeszkedik, a FROM záradékhoz nem, mivel adataink nem voltak a „sor” formában. Ezért kaptunk hibát a fenti példában. Az UNNEST függvény segítségével a tömböket sorokká alakíthatja, miközben a lekérdezés nem működik a záradékkal.

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

03. példa: Sorok konvertálása tömbbe

A sorok tömbgé történő átalakításához meg kell határoznunk az adott lekérdezést egy lekérdezésen belül. Itt kell használnia a két SELECT lekérdezést. Egy belső választási lekérdezés egy tömböt sorokká konvertál az UNNEST függvény segítségével. Míg a külső SELECT lekérdezés ismét átalakítja az összes sort egyetlen tömbbe, amint az az alábbiakban bemutatott képen látható. Vigyázz; a „SELECT” lekérdezésben kisebb „tömb” betűket kell használnia.

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

04. példa: Távolítsa el a duplikátumokat a DISTINCT záradék használatával

A DISTINCT segíthet a másolatok kinyerésében bármilyen formájú adatból. Ehhez azonban szükségszerűen sorok használatára van szükség adatokként. Ez azt jelenti, hogy ez a módszer egész számokra, szövegre, lebegőkre és más adattípusokra érvényes, de a tömbök nem engedélyezettek. A másolatok eltávolításához először a tömbtípus adatait kell sorokká konvertálni az UNNEST módszerrel. Ezt követően ezek az átalakított adatsorok átkerülnek a DISTINCT záradékba. Az alábbiakban bepillanthat a kimenetbe, hogy a tömböt sorokká alakították át, majd a DISTINCT záradékkal csak az ezekből a sorokból származó külön értékeket kapta le.

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

Ha tömbre van szüksége kimenetként, használja az array () függvényt az elsõ SELECT lekérdezésben, és használja a DISTINCT záradékot a következõ SELECT lekérdezésben. A megjelenített képből látható, hogy a kimenetet tömb formában jelenítette meg, nem pedig a sorban. Míg a kimenet csak különálló értékeket tartalmaz.

>> SELECT tömb (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: szöveg []));

05. példa: Távolítsa el a duplikátumokat az ORDER BY záradék használata közben

Eltávolíthatja az ismétlődő értékeket az úszó típusú tömbből is, az alábbiak szerint. A különálló lekérdezéssel együtt az ORDER BY záradékot fogjuk használni, hogy az eredményt egy adott érték rendezési sorrendjében kapjuk meg. Ehhez próbálja ki az alább megadott lekérdezést a parancssori héjban.

>> SELECT DISTINCT UNNEST ('2,85, 2.73., 2.85, 1.8, 2.73 ':: float []) RENDELÉS: 1;

Először a tömböt sorokká alakították az UNNEST függvény segítségével; akkor ezeket a sorokat növekvő sorrendbe rendezi az alább látható ORDER BY záradék használatával.

A sorok tömbgé történő átalakításához használja ugyanazt a SELECT lekérdezést a shellben, miközben azt egy kis ábécésorrendű tömb () függvénnyel használja. Az alábbi kimenetre pillanthat, hogy a tömböt először sorokká alakították át, majd csak a különálló értékeket választották. Végül a sorok újra tömbökké alakulnak.

>> SELECT tömb (SELECT DISTINCT UNNEST ('2,85, 2.73., 2.85, 1.8, 2.73 ':: úszó []));

Következtetés:

Végül sikeresen megvalósította az útmutató összes példáját. Reméljük, hogy a példákban az UNNEST (), DISTINCT és array () metódus végrehajtása során nem merült fel problémája.

Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...