Problema:
Vuoi dividere una stringa in PostgreSQL.
Esempio 1:
Hai una frase e vorresti dividerla per il carattere spazio.
Soluzione 1:
SELECT unnest(
string_to_array('It''s an example sentence.', ' ')
) AS parts;
Il risultato è simile al seguente:
| parti |
|---|
| È |
| un |
| esempio |
| frase. |
Discussione:
Per ottenere tutte le parti della frase come elementi di un array in PostgreSQL, usa la funzione string_to_array(text, delimiter). Il testo è il testo che desideri dividere e il delimitatore è la stringa (qui, uno spazio) in base alla quale desideri dividere il testo. Un semplice utilizzo di string_to_array(text, delimiter) funzione:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
restituirà il seguente risultato:
| parti |
|---|
| {È,un,esempio,frase.} |
SELECT unnest(
string_to_array('It''s an example sentence.', ' ')
) AS parts;
Questo produrrà una colonna con tutte le parti della stringa, ciascuna in una riga separata.
Esempio 2:
Nelle sentences tabella, ci sono alcune frasi.
| frase |
|---|
| Questa è la prima frase. |
| Ed ecco l'altro. |
Vuoi dividere le frasi per il carattere spazio.
Soluzione 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Il risultato è simile al seguente:
| parti |
|---|
| Questo |
| è |
| il |
| prima |
| frase. |
| E |
| ecco |
| il |
| altro |
| uno. |
Discussione:
Proprio come nell'esempio precedente, utilizzare le funzioni string_to_array(text, delimitatore) e unnest(array). Il testo dovrebbe essere il nome della colonna (frase), ma il delimitatore è sempre lo spazio (' '). Questa volta, utilizzi i dati della tabella, quindi devi utilizzare la parola chiave FROM insieme al nome della tabella.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Esempio 3:
Nelle sentences tabella, ci sono due colonne:id e sentence .
| id | frase |
|---|---|
| 1 | Questa è la prima frase. |
| 2 | Ed ecco l'altro. |
Vuoi dividere le frasi per il carattere spazio.
Soluzione 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Il risultato è simile al seguente:
| id | parti |
|---|---|
| 1 | Questo |
| 1 | è |
| 1 | il |
| 1 | prima |
| 1 | frase. |
| 2 | E |
| 2 | ecco |
| 2 | il |
| 2 | altro |
| 2 | uno. |
Discussione:
Questo esempio è molto simile, ma vuoi anche vedere l'id colonna. Per vedere questa colonna, aggiungila a SELECT list e ricordati di includere la virgola. Vedrai l'ID della frase insieme alle parti delle frasi nel risultato. Ad esempio, la prima frase è divisa in 5 parti e ha l'ID 1 . Quindi, l'ID di tutte e 5 le parti nel risultato sarà 1 . La frase successiva, con l'ID 2 , è anche diviso in 5 parti e ciascuna di queste parti verrà mostrata con id = 2 .