2010-10-26 6 views

Répondre

3

vous devez soit utiliser plusieurs déclarations

COMME
(columnName LIKE '%alma%' or columnName LIKE '%sajt%' or columnName LIKE '%etc%') 

Ou regardez en texte intégral Recherche: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

Avez-vous abrégé ceci ou cela fonctionne-t-il réellement dans MySQL? c'est à dire. pouvez-vous manquer le nom de la colonne si vous mettez vos LIKE entre parenthèses? –

+0

@Paul abrégé ... mis à jour pour être clair, merci! – Fosco

+0

merci. Je n'étais pas pédant - je suis souvent surpris par les raccourcis syntaxiques qui sont disponibles dans différentes saveurs de SQL et la pensée (espérée!) Cela pourrait être l'un d'entre eux. –

2

Il est impossible. IN est conçu pour effectuer des recherches dans des ensembles potentiellement volumineux, et non pour effectuer des recherches de motifs. Vous devez utiliser plusieurs conditions LIKE séparées par OR opérateurs. Pour autant que je sache, ceci n'est pas autorisé.

0

Vous devez utiliser plusieurs expressions LIKE, comme dans

SELECT * 
    FROM SOME_TABLE 
    WHERE SOME_VALUE LIKE '%alma%' OR 
     SOME_VALUE LIKE '%sajt%'; 

Partagez et appréciez.

1

D'autres affiches vous ont montré comment utiliser plusieurs clauses LIKE combinées avec OU pour obtenir cet effet. Voici deux autres pensées:

  • Si vous vous trouvez la recherche dans les champs de texte, il est souvent une indication que vous stockez trop d'informations dans ces domaines. Si possible, envisagez de répartir ces valeurs dans des champs et/ou des tableaux séparés pour faciliter la recherche et la validation.

  • Le langage SQL simple ne permet pas de rechercher dans les champs de texte. Si le texte est volumineux, si vous disposez de plus d'un nombre relativement faible d'enregistrements et si les performances sont importantes pour cette requête, pensez à ajouter l'indexation de texte intégral à votre base de données.

0

Si vous faites quelque chose comme moi, il peut être utile d'insérer les motifs dans une table secondaire. Ensuite, vous pouvez utiliser 'like' avec une 'join':

créer des modèles de table (p varchar (50)); insérer dans les valeurs de modèles ('to%'), ('lo%');

créer une table table1 (txt varchar (50)); insérer dans les valeurs table1 ('toto'), ('titi'), ('tom'), ('louis');

Sélectionnez txt à partir de la table 1 motifs de jointure interne sur txt comme p;

| toto |

| tom |

| louis |

Cela fonctionne pour moi mais curieusement c'est beaucoup plus lent que plusieurs appels (sur mon système 5.5 au moins): sélectionnez txt de table1 où txt comme 'à%'; sélectionnez txt à partir de table1 où txt comme 'lo%'; ...