Saltar al contenido

Dividir la columna en varias filas en Postgres

Solución:

En Postgres 9.3+ use un LATERAL entrar:

SELECT s.token, flag
FROM   tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE  flag = 2;

Tenga en cuenta que la forma abreviada de un LATERAL unirse solo devuelve filas, si unnest() en realidad devuelve fila (s).

También podrías usar regexp_split_to_table(), pero suele ser más lento porque la coincidencia de expresiones regulares cuesta un poco más.
Relacionado:

  • SQL selecciona filas que contienen subcadena en el campo de texto
  • PostgreSQL unnest () con número de elemento
  • ¿Cuál es la diferencia entre LATERAL y una subconsulta en PostgreSQL?

Creo que no es necesario usar una combinación, solo el unnest() función en conjunto con string_to_array() Deberías hacerlo:

SELECT unnest(string_to_array(subject, ' ')) as "token", flag FROM test;

unnest | token                                                                                                   
-------+-------                                                                                                  
this   |     2                                                                                                   
is     |     2                                                                                                   
a      |     2                                                                                                   
test   |     2                                                                                                   
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *