Maison > base de données > tutoriel mysql > Comment diviser une colonne de texte en plusieurs lignes dans PostgreSQL ?

Comment diviser une colonne de texte en plusieurs lignes dans PostgreSQL ?

Mary-Kate Olsen
Libérer: 2025-01-06 21:37:40
original
639 Les gens l'ont consulté

How to Split a Text Column into Multiple Rows in PostgreSQL?

Diviser les colonnes en lignes dans Postgres

Dans Postgres, il peut être nécessaire de transformer un tableau avec une seule colonne de type texte en un tableau avec plusieurs lignes, où chaque ligne représente un jeton de la colonne de texte.

Exemples de données et résultat souhaité

Considérez le table source suivante :

</p>
<table>
<thead><tr>
<th>subject</th>
<th>flag</th>
</tr></thead>
<tbody><tr>
<td>this is a test</td>
<td>2</td>
</tr></tbody>
</table>
<p>

La sortie souhaitée est une table avec deux columns :

</p>
<table>
<thead><tr>
<th>token</th>
<th>flag</th>
</tr></thead>
<tbody>
<tr>
<td>this</td>
<td>2</td>
</tr>
<tr>
<td>is</td>
<td>2</td>
</tr>
<tr>
<td>a</td>
<td>2</td>
</tr>
<tr>
<td>test</td>
<td>2</td>
</tr>
</tbody>
</table>
<p>

Solution utilisant la jointure LATERAL

Pour Postgres 14 et supérieur, la jointure LATERAL join peut être utilisé avec la fonction string_to_table() pour réaliser cette transformation. La forme minimale de la requête est :

SELECT token, flag
FROM tbl, string_to_table(subject, ' ') token
WHERE flag = 2;
Copier après la connexion

Pour Postgres 13 et versions antérieures, unnest(string_to_array(subject, ' ')) doit être utilisé à la place de string_to_table(subject, ' ').

La fonction string_to_table() divise la colonne sujet en jetons distincts, un pour chaque ligne, avec la même valeur pour la colonne drapeau. La clause WHERE filtre les résultats pour afficher uniquement les jetons marqués avec une valeur de 2.

Cette solution fournit un moyen concis et efficace de diviser une colonne de texte en lignes individuelles dans Postgres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal