2009-09-01 9 views
3

Mon problème est similaire à celui-ci: Je vais avoir du mal à utiliser paramaters dans une recherche en texte intégral avec FORMSOF (INFLECTIONAL. Cette requête ne retourne rienComment passer le paramètre à la fonction FORMSOF dans le serveur SQL

DECLARE @SearchWord nvarchar(4000) 
SET @SearchWord = 'tax' 
SELECT listing_id, RANK, name, address, city, zip, heading, phone 
FROM listings a, 
FREETEXTTABLE(listings, *, 'FormsOf(INFLECTIONAL, @SearchWord') 
WHERE [KEY] = a.listing_id 
ORDER BY RANK DESC, name 

mais celui-ci fonctionne bien

DECLARE @SearchWord nvarchar(4000) 
SET @SearchWord = 'tax' 
SELECT listing_id, RANK, name, address, city, zip, heading, phone 
FROM listings a, 
FREETEXTTABLE(listings, *, 'FormsOf(INFLECTIONAL, tax') 
WHERE [KEY] = a.listing_id 
ORDER BY RANK DESC, name 

J'ai trouvé cette question here

Répondre

2

Vous êtes SEARCHi ng pour "@SearchWord" au lieu de "taxe"!

Essayez cette requête:

DECLARE @SearchWord nvarchar(max) 
SET @SearchWord = 'tax' 

DECLARE @SearchString nvarchar(max) 
SET @SearchString = 'FormsOf(INFLECTIONAL, "' + @SearchWord + '")' 

SELECT listing_id, RANK, name, address, city, zip, heading, phone 
FROM listings a, 
FREETEXTTABLE(listings, *, @SearchString) 
WHERE [KEY] = a.listing_id 
ORDER BY RANK DESC, name 
+0

Toute idée de comment cela serait susceptible/à l'abri des attaques par injection SQL? Selon http://stackoverflow.com/questions/2176440/parameters-in-the-formsof-function-and-sql-injection –

+1

@Andrew M: Ce code est ouvert à l'injection dépend de l'origine de @SearchWord. Je pense que c'est au programmeur de savoir à propos de l'injection SQL; – Andomar

+1

Désolé, ce n'était pas une critique, mais plutôt un effort pour comprendre la nature du paramètre @SearchString généré de façon dynamique, et si cela offre la même protection d'un requête plus simple paramétrée. Je suis également nouveau à la syntaxe de la fonction FormsOf semblant être appelée à partir d'une chaîne. –

Questions connexes