2011-11-14 7 views
0

peut-être que c'est une question stupide.like sql recherche libre

Comment puis-je obtenir dans sql « comme « % test% » en utilisant du texte libre?

Je pensais que contient et texte libre équivalent à » comme « % essai% », plus un chèque de grammaire get, et la performance .

Dans mon cas, je dois:

select * from ServiceOfferResultIndexed where contains(FirstName,'test') 

qui me donne 18

rows.select * from ServiceOfferResultIndexed where FirstName like '%test%' 

qui me donne 229 lignes.

merci pour l'aide. Le DB, est MS SQL 2005. Je pense qu'il supporte le * en tant que postfix. Il semble que si je fournis '' * test '', le * est considéré comme un mot et non comme un joker. Test devient le mot suivant.

Contient ne supporte que "test *", où il cherche toutes les phrases commençant par 'test' suivi de tout autre caractère.

+0

Quelle base de données utilisez-vous? – Oded

Répondre

2

Ce sont deux expressions différentes. LIKE '%test%' va trouver n'importe quelle ligne où ces quatre personnages sont ensemble (par exemple testimonial, ou concurrent) où contains va correspondre avec des mots.

Je ne sais pas quel moteur de texte intégral vous utilisez, mais les caractères génériques sont généralement pris en charge. Par exemple, que se passe-t-il si vous utilisez contains(firstame, '*test*')? Vous devrez consulter la documentation de votre dbms spécifique pour les caractères génériques dans la recherche de texte libre.