Maison >base de données >tutoriel mysql >Comment diviser une colonne Postgres en plusieurs lignes ?
Considérez le tableau Postgres suivant :
subject | flag ---------+------ this is a test | 2
L'objectif est de transformer ce tableau en un nouveau tableau avec chaque mot de la colonne "sujet" étant une nouvelle ligne, tout en préservant le correspondant Valeur "flag".
Un moyen efficace d'y parvenir dans Postgres consiste à utiliser une jointure LATERAL en conjonction avec string_to_table() (disponible dans Postgres 14). Cela nous permet de diviser la colonne « sujet » en jetons individuels et de les joindre à la table d'origine.
La requête suivante accomplit cette transformation :
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
Dans cette requête, nous utilisons le Jointure LATÉRALE pour générer un ensemble de lignes pour chaque jeton dans la colonne "sujet", et nous filtrons les résultats en fonction du "drapeau" spécifié value.
Approches alternatives
Pour Postgres 13 et versions antérieures, unnest(string_to_array(subject, ' ')) peut être utilisé à la place de string_to_table(subject, ' ') .
Une autre approche consiste à utiliser regexp_split_to_table() fonction, qui permet une tokenisation plus flexible basée sur des expressions régulières. Cependant, cette approche est généralement plus lente que l'utilisation de string_to_table().
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!