PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment diviser une chaîne dans PostgreSQL

Problème :

Vous souhaitez fractionner une chaîne dans PostgreSQL.

Exemple 1 :

Vous avez une phrase et vous aimeriez la diviser par le caractère espace.

Solution 1 :

SELECT unnest(
  string_to_array('It''s an example sentence.', ' ')
) AS parts;

Le résultat ressemble à ceci :

parties
C'est
un
exemple
phrase.

Discussion :

Pour obtenir toutes les parties de la phrase en tant qu'éléments d'un tableau dans PostgreSQL, utilisez la fonction string_to_array(text, delimiter). Le texte est le texte que vous souhaitez diviser, et le délimiteur est la chaîne (ici, un espace) par laquelle vous souhaitez diviser le texte. Une utilisation simple du string_to_array(text, delimiter) fonction :

SELECT string_to_array('It''s an example sentence.', ' ') AS parts;

renverra le résultat suivant :

parties
{C'est,un,exemple,de,phrase.}
SELECT unnest(
  string_to_array('It''s an example sentence.', ' ')
) AS parts;

Cela produira une colonne avec toutes les parties de chaîne, chacune dans une ligne distincte.

Exemple 2 :

Dans les sentences table, il y a quelques phrases.

phrase
Ceci est la première phrase.
Et voici l'autre.

Vous voulez diviser les phrases par le caractère espace.

Solution 2 :

SELECT unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Le résultat ressemble à ceci :

parties
Ceci
est
le
premier
phrase.
Et
voici
le
autre
un.

Discussion :

Comme dans l'exemple précédent, utilisez les fonctions string_to_array(text, delimiter) et unnest(array). Le texte doit être le nom de la colonne (phrase), mais le délimiteur est toujours l'espace (' '). Cette fois, vous utilisez les données de la table, vous devez donc utiliser le mot-clé FROM avec le nom de la table.

SELECT unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Exemple 3 :

Dans les sentences table, il y a deux colonnes :id et sentence .

identifiant phrase
1 Ceci est la première phrase.
2 Et voici l'autre.

Vous voulez diviser les phrases par le caractère espace.

Solution 3 :

SELECT
  id,
  unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Le résultat ressemble à ceci :

identifiant pièces
1 Ceci
1 est
1 le
1 premier
1 phrase.
2 Et
2 voici
2 le
2 autre
2 un.

Discussion :

Cet exemple est très similaire, mais vous voulez également voir le id colonne. Pour voir cette colonne, ajoutez-la simplement au SELECT liste et n'oubliez pas d'inclure la virgule. Vous verrez l'ID de la phrase ainsi que les parties des phrases dans le résultat. Par exemple, la première phrase est divisée en 5 parties et porte l'ID 1 . Par conséquent, l'ID des 5 parties du résultat sera 1 . La phrase suivante, avec l'ID 2 , est également divisé en 5 parties, et chacune de ces parties sera affichée avec id = 2 .