Voici une version simplifiée de ma requête sql qui utilise CONTAINSTABLE pour la recherche de texte intégral.SQL Server - Recherche de texte libre avec mot-clé vide
DECLARE @pSearchFor AS NVARCHAR(100);
SET @pSearchFor = 'SomeKeyword';
SELECT MS.[ModuleScreenID] AS ScreenID
,MS.[ModuleScreenCode] AS ScreenCode
,M.[Description] AS ModuleDescription
,M.[ModuleCode] AS ModuleCode
,FT.[Rank]
FROM ModuleScreen MS
JOIN Module M ON MS.ModuleID = M.ModuleID
JOIN CONTAINSTABLE(ModuleScreen, *, @pSearchFor) FT ON MS.ModuleScreenID = FT.[KEY]
Je veux passer la valeur vide ou nulle pour le paramètre @pSearchFor de telle sorte que tous les enregistrements sont retournés par la recherche en texte intégral. Mais j'obtiens une erreur "Null ou un prédicat de texte intégral vide" lorsque je passe une valeur vide ou nulle. Après googling, j'ai trouvé que CONTAINSTABLE ne peut pas prendre un paramètre vide pour les mots-clés. J'ai aussi vu cela question dans SO mais ça ne m'a pas aidé. Puis-je effectuer une jointure conditionnelle avec CONTAINSTABLE (uniquement lorsqu'une valeur est spécifiée pour le paramètre @pSearchFor)?. Je ne suis pas sûr de savoir comment y parvenir. Apprécierait n'importe quel pointeur.
Je veux que tous les enregistrements soient retournés lorsque les mots-clés sont vides ou nuls. J'ai également mentionné cela dans ma question initiale. – muruge
Voir la mise à jour, espérons que cela vous aide. – Seph
Merci pour votre suggestion. J'ai pensé à cette réponse mais je n'ai pas voulu utiliser la même requête deux fois que vous l'avez mentionné dans votre réponse éditée. En outre, je dois utiliser cette requête dans une procédure stockée et ne peut pas utiliser un SQL dynamique. Existe-t-il un moyen de joindre ** conditionnellement à CONTAINSTABLE **? – muruge