SQL SELECT WHERE полето съдържа думи

Нуждая се от селекция, която да връща резултати по следния начин:

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

И ми трябват всички резултати, т.е. това включва низове с 'word2 word3 word1' или 'word1 word3 word2' или всяка друга комбинация от трите.

Всички думи трябва да са в резултата.

Решение

Доста бавен, но работещ метод за включване на всяка дума:

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

Ако трябва да включите всички думи, използвайте това:

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

Ако искате нещо по-бързо, трябва да разгледате пълнотекстовото търсене, а то е много специфично за всеки тип база данни.

Коментари (13)
SELECT * FROM MyTable WHERE 
Column1 LIKE '%word1%'
AND Column1 LIKE '%word2%'
AND Column1 LIKE  '%word3%'

Променено OR на AND въз основа на редакция на въпроса.

Коментари (1)
select * from table where name regexp '^word[1-3]$'

или

select * from table where name in ('word1','word2','word3')
Коментари (4)