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
.