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