1013 votes

SQL SELECT WHERE champ contient les mots

J’ai besoin d’un select qui retourne des résultats comme celui-ci :

Et j’ai besoin de tous les résultats, y compris les chaînes avec « mot2 mot3 mot1 » ou « mot1 mot2 mot3 » tous les mots doit se trouver dans le résultat.

1487voto

mvp Points 29360

Méthode plutôt lente, mais travail pour inclure n’importe quel des mots :

Si vous avez besoin de tous les mots d’être présent, utilisez ceci :

Si vous voulez quelque chose de plus rapide, il faut se pencher sur la recherche en texte intégral, et c’est très spécifique pour chaque type de base de données.

149voto

Sam Points 3542

Notez que si vous utilisez LIKE afin de déterminer si une chaîne est une chaîne à une autre chaîne, vous devez vous échapper le modèle de caractères correspondants dans votre chaîne de recherche.

Si votre dialecte SQL prend en charge CHARINDEX, c'est beaucoup plus facile à utiliser à la place:

SELECT * FROM MyTable
WHERE CHARINDEX('word1', Column1) > 0
  AND CHARINDEX('word2', Column1) > 0
  AND CHARINDEX('word3', Column1) > 0

Veuillez également garder à l'esprit que ce et de la méthode dans la accepté de répondre à couvrir seulement la sous-chaîne correspondant plutôt que le mot correspondant. Ainsi, par exemple, la chaîne 'word1word2word3' serait encore de match.

17voto

Jon Crowell Points 5656
 SELECT * FROM MyTable WHERE 
Column1 LIKE '%word1%'
AND Column1 LIKE '%word2%'
AND Column1 LIKE  '%word3%'
 

Changement OR à AND fonction de la modification à poser.

-9voto

vidyadhar Points 945
 select * from table where name regexp '^word[1-3]$'
 

ou

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X