"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment diviser une colonne Postgres en plusieurs lignes?

Comment diviser une colonne Postgres en plusieurs lignes?

Publié le 2025-02-26
Parcourir:797

How to Split a Postgres Column into Multiple Rows?

Split colonne en plusieurs lignes dans Postgres

instruction Problème

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.

La requête suivante accomplit cette transformation:

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 ().

Dernier tutoriel Plus>

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