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.
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>
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;
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!