SQL SELECT WHERE veld bevat woorden

Ik heb een select nodig die resultaten geeft als deze:

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

En ik heb alle resultaten nodig, d.w.z. dit omvat strings met 'word2 word3 word1' of 'word1 word3 word2' of elke andere combinatie van de drie.

Alle woorden moeten in het resultaat staan.

Oplossing

Nogal traag, maar werkmethode om alle woorden op te nemen:

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

Als alle woorden aanwezig moeten zijn, gebruik dan dit:

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

Als je iets snellers wilt, moet je kijken naar full text search, en dit is zeer specifiek voor elk databasetype.

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

Veranderde OR in AND op basis van bewerking van vraag.

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

of

select * from table where name in ('word1','word2','word3')
Commentaren (4)