PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come dividere una stringa in PostgreSQL

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 .