2009-07-08 5 views
1

Je suis en train d'écrire une requête de recherche dans SQL Server 2005 pour un forum de discussion. Le proc prend plusieurs paramètres, mais la plupart sont "optionnels". Il y a un champ de recherche pour le corps du message, sur lequel j'ai un index de texte intégral. Voici le problème ..SQL Server "Facultatif" Recherche FreeText

Si je transmets une valeur à rechercher avec FreeText, la recherche fonctionne bien (merci Microsoft). Toutefois, le corps du corps du message est facultatif, ce qui signifie que dans ma requête, je souhaite gérer un "tout rechercher". Comment puis-je par défaut ma requête pour utiliser tout \ all enregistrements indépendamment des données contenues dans mon champ de corps de message?

Je sais que cela ne fonctionne pas, mais si aucune valeur est renvoyée pour le paramètre du corps de message, Im la recherche de quelque chose comme:

where (FREETEXT(msg.messagebody, '*')) 
+0

Avez-vous obtenu cela au travail? –

+0

J'ai besoin de la solution. N'importe qui? –

Répondre

1

Vous pouvez faire quelque chose comme:

select * de Products_CatalogProducts où (@keywords = '*' ou FreeText (msg.messagebody, mots-clés) @)

Supposons que vous passé dans @keywords avec un * si elle est vide

+0

Merci STeve, je m'excuse si je trompe ce que je cherchais. Le problème est que le "*" ne fonctionne pas. Donc, ce que je cherche vraiment, c'est une valeur que je peux passer qui va juste chercher "tout", savoir ce que je veux dire? Merci pour votre temps ... –

+0

Faites un essai, ce que cela va faire est de renvoyer tous les résultats si le @keywords = '*' ou si ce n'est pas alors il fera la recherche de texte libre –

+0

Pouvez-vous s'il vous plaît dire la solution pour cela ? –

Questions connexes