SQL SELECT WHERE πεδίο περιέχει λέξεις

Χρειάζομαι ένα select που θα επιστρέφει αποτελέσματα όπως αυτό:

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

Και χρειάζομαι όλα τα αποτελέσματα, δηλαδή αυτό περιλαμβάνει τις συμβολοσειρές με 'λέξη2 λέξη3 λέξη1' ή 'λέξη1 λέξη3 λέξη2' ή οποιονδήποτε άλλο συνδυασμό των τριών.

Όλες οι λέξεις πρέπει να υπάρχουν στο αποτέλεσμα.

Λύση

Μάλλον αργή, αλλά λειτουργική μέθοδος για να συμπεριλάβει οποιεσδήποτε λέξεις:

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%'

Αλλαγή του "Ή" σε "ΚΑΙ" με βάση την επεξεργασία της ερώτησης.

Σχόλια (1)
select * from table where name regexp '^word[1-3]$'

ή

select * from table where name in ('word1','word2','word3')
Σχόλια (4)