sql - multiples - Dividir la columna en mĂșltiples filas en Postgres
transponer filas en columnas mysql (1)
Supongamos que tengo una tabla como esta:
subject | flag
----------------+------
this is a test | 2
subject
es de tipo text
y la flag
es de tipo int
. Me gustaría transformar esta tabla en algo como esto en Postgres:
token | flag
----------------+------
this | 2
is | 2
a | 2
test | 2
¿Hay una forma fácil de hacer esto?
En Postgres 9.3+ use una combinación LATERAL
:
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 una combinación LATERAL
solo devuelve filas, si unnest()
realidad devuelve fila (s).
También puede usar regexp_split_to_table()
, pero eso suele ser más lento porque la comparación de expresiones regulares cuesta un poco más.
Relacionado: