PostgreSQL

Esempi di PostgreSQL UNNESTSQL

Esempi di PostgreSQL UNNESTSQL
Puoi specificare una colonna in PostgreSQL solo come un array di tipi di dati appropriati. I tipi di dati incorporati, specificati dall'utente e inalienabili sono tutte possibilità. A parte questo, gli array sono molto importanti in PostgreSQL. Hai imparato a conoscere gli array in PostgreSQL, incluso come costruire, interrogare e talvolta persino generare array con il metodo ARRAY. Tuttavia, ci sono momenti in cui vorrei fare il contrario e convertire un array PostgreSQL in righe. Ci sono molte cause per cui vorresti farlo. Per un po', diciamo che stai cercando la giunzione di due array. In PostgreSQL, l'operatore INTERSECT può farlo efficacemente per due diversi insiemi di righe. Tuttavia, non esiste una controparte per gli array. Allo stesso modo, l'operatore UNION unisce 2 coppie di righe; tuttavia, non c'è nulla di paragonabile per gli array. Il metodo UNNEST sembra essere il segreto di tutto questo. Durante il consumo di UNNEST, devi usare cautela poiché (come con la maggior parte dei sistemi informatici) PostgreSQL farebbe tutto ciò che gli dai di fare, non esattamente quello che vuoi che faccia.

Per elaborare completamente questo concetto, apri la shell della riga di comando installata di PostgreSQL nel tuo sistema. Fornire il nome del server, il nome del database, il numero di porta, il nome utente e la password per l'utente specifico se non si desidera iniziare a lavorare con le opzioni predefinite. Se vuoi lavorare con i parametri predefiniti, lascia vuota ogni opzione e premi Invio ogni opzione. Ora la tua shell della riga di comando è pronta per lavorare.

Esempio 01: definizione dei dati del tipo di array

È una buona idea studiare i fondamenti prima di passare alla modifica dei valori dell'array nel database. Ecco il modo per specificare un elenco di tipi di testo. Puoi vedere che l'output ha mostrato l'elenco dei tipi di testo usando la clausola SELECT.

>> SELECT 'Aqsa, Raza, Saeed'::text[];

Il tipo di dati deve essere definito durante la scrittura di una query. PostgreSQL non riconoscerà il tipo di dati se sembra essere una stringa. In alternativa, potremmo usare il formato ARRAY[] per specificarlo come tipo di stringa, come mostrato di seguito nella query. Dall'output citato di seguito, puoi vedere che i dati sono stati recuperati come tipo di array utilizzando la query SELECT.

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

Quando selezioni gli stessi dati dell'array con la query SELECT mentre usi la clausola FROM, non funziona come dovrebbe. Ad esempio, prova la query seguente della clausola FROM nella shell. Controllerai che verrà visualizzato un errore. Questo perché la clausola SELECT FROM presuppone che i dati che sta recuperando siano probabilmente un gruppo di righe o alcuni punti da una tabella.

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

Esempio 02: Converti array in righe

ARRAY[] è una funzione che restituisce un valore atomico. Di conseguenza, si adatta solo alla clausola SELECT e non alla clausola FROM poiché i nostri dati non erano nella forma "riga". Ecco perché abbiamo ricevuto un errore nell'esempio sopra above. Ecco come utilizzare la funzione UNNEST per convertire gli array in righe mentre la query non funziona con la clausola.

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

Esempio 03: Converti righe in array

Per convertire nuovamente le righe in un array, dobbiamo definire quella particolare query all'interno di una query per farlo. Devi usare le due query SELECT qui. Una query di selezione interna sta convertendo un array in righe utilizzando la funzione UNNEST. Mentre la query SELECT esterna sta nuovamente convertendo tutte quelle righe in un singolo array, come mostrato nell'immagine citata di seguito. Attento; devi usare l'ortografia più piccola di "array" nella query SELECT esterna.

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

Esempio 04: rimuovere i duplicati utilizzando la clausola DISTINCT

DISTINCT può aiutarti a estrarre duplicati da qualsiasi forma di dati. Tuttavia, richiede necessariamente l'uso di righe come dati. Ciò significa che questo metodo funziona per numeri interi, testo, float e altri tipi di dati, ma gli array non sono consentiti. Per rimuovere i duplicati, devi prima convertire i dati del tipo di array in righe utilizzando il metodo UNNEST. Successivamente, queste righe di dati convertite verranno passate alla clausola DISTINCT. Puoi dare un'occhiata all'output di seguito, che l'array è stato convertito in righe, quindi solo i valori distinti da queste righe sono stati recuperati utilizzando la clausola DISTINCT.

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

Se hai bisogno di un array come output, usa la funzione array() nella prima query SELECT e usa la clausola DISTINCT nella successiva query SELECT. Puoi vedere dall'immagine visualizzata che l'output è stato mostrato nel modulo array, non nella riga. Mentre l'output contiene solo valori distinti.

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

Esempio 05: rimuovere i duplicati durante l'utilizzo della clausola ORDER BY

Puoi anche rimuovere i valori duplicati dall'array di tipo float, come mostrato di seguito. Insieme alla query distinta, utilizzeremo la clausola ORDER BY per ottenere il risultato nell'ordinamento di un valore specifico. Prova la query indicata di seguito nella shell della riga di comando per farlo.

>> SELECT DISTINCT UNNEST( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ) ORDINA PER 1;

Innanzitutto, l'array è stato convertito in righe utilizzando la funzione UNNEST; quindi, queste righe verranno ordinate in ordine crescente utilizzando la clausola ORDER BY come mostrato di seguito.

Per convertire nuovamente le righe in un array, usa la stessa query SELECT nella shell mentre la usi con una piccola funzione array() alfabetica. Puoi dare un'occhiata all'output sotto che l'array è stato convertito prima in righe, quindi sono stati scelti solo i valori distinti. Alla fine, le righe verranno nuovamente convertite in un array.

>> SELECT array( SELECT DISTINCT UNNEST( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ));

Conclusione:

Infine, hai implementato con successo ogni esempio di questa guida. Ci auguriamo che tu non abbia alcun problema durante l'esecuzione del metodo UNNEST(), DISTINCT e array() negli esempi.

I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...
I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...