Considérez la table postgres suivante:
subject | flag --------- ------ this is a test | 2
Le but est de transformer cette table en une nouvelle table avec chaque mot de la colonne "Sujet" étant une nouvelle ligne, tout en préservant la valeur "Flag" correspondante. ]
Un moyen efficace d'y parvenir dans Postgres est d'employer une jointure latérale en conjonction avec string_to_table () (disponible dans Postgres 14). Cela nous permet de diviser la colonne "Sujet" en jetons individuels et de les rejoindre avec la table d'origine.select token, drapeau De TBL, String_To_Table (Sujet, '') comme jeton Où Flag = 2;
Dans cette requête, nous utilisons la 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 de la valeur "Flag" spécifiée.
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
Approches alternatives
pour postgres 13 et plus tôt, innest (string_to_array (sujet, '')) Peut être utilisé à la place de string_to_table (sujet, '').
Une autre approche consiste à utiliser la fonction regexp_split_to_table (), ce qui permet une tokenisation plus flexible basée sur des expressions régulières. Cependant, cette approche est généralement plus lente que d'utiliser string_to_table ().Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3