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)