"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo dividir una columna Postgres en múltiples filas?

¿Cómo dividir una columna Postgres en múltiples filas?

Publicado el 2025-02-26
Navegar:117

How to Split a Postgres Column into Multiple Rows?

columna en múltiples filas en postgrres

declaración de problemas

Considere la siguiente tabla de postgres:

subject |  flag
--------- ------
this is a test | 2

El objetivo es transformar esta tabla en una nueva tabla con cada palabra en la columna "sujeto" que es una nueva fila, al tiempo que preserva el valor "indicador" correspondiente.

solución

Una forma efectiva de lograr esto en Postgres es empleando una unión lateral junto con String_TO_Table () (disponible en Postgres 14). Esto nos permite dividir la columna de "sujeto" en tokens individuales y unirlos con la tabla original.

La siguiente consulta logra esta transformación:

SELECT token, flag
FROM tbl, string_to_table(subject, ' ') AS token
WHERE flag = 2;

En esta consulta, usamos la unión lateral para generar un conjunto de filas para cada token en la columna "Sujeto", y filtramos los resultados en función del valor "FLAG" especificado.

enfoques alternativos

para Postgres 13 y anteriores, unnest (String_to_array (temas, ' ')) se puede usar en lugar de string_to_table (sujeto,' ').

Otro enfoque es usar la función REGEXP_SPLIT_TO_TABLE (), que permite una tokenización más flexible basada en expresiones regulares. Sin embargo, este enfoque es generalmente más lento que usar string_to_table ().

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3