SQL SELECT WHERE campo contém palavras

Preciso de uma selecção que devolva resultados como este:

SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 word2 word3'

E eu preciso de todos os resultados, ou seja, isto inclui cordas com 'word2 word3 word1' ou 'word1 word3 word2' ou qualquer outra combinação das três.

Todas as palavras têm de estar no resultado.

Solução

Bastante lento, mas método de trabalho para incluir qualquer palavra:

SELECT * FROM mytable
WHERE column1 LIKE '%word1%'
   OR column1 LIKE '%word2%'
   OR column1 LIKE '%word3%'

Se você precisa todas as palavras para estar presente, use isto:

SELECT * FROM mytable
WHERE column1 LIKE '%word1%'
  AND column1 LIKE '%word2%'
  AND column1 LIKE '%word3%'

Se você quiser algo mais rápido, você precisa pesquisar o texto completo, e isto é muito específico para cada tipo de base de dados.

Comentários (13)
SELECT * FROM MyTable WHERE 
Column1 LIKE '%word1%'
AND Column1 LIKE '%word2%'
AND Column1 LIKE  '%word3%'

Mudou o OR para AND com base na edição para questionar.

Comentários (1)
select * from table where name regexp '^word[1-3]$'

ou

select * from table where name in ('word1','word2','word3')
Comentários (4)