2009-09-01 8 views
3

Mein Problem dieser ähnlich ist, weitergeben müssen: Ich habe Probleme mit Paramater in einer Volltextsuche mit FORMSOF (inflectional. Diese Abfrage nichts zurückliefertWie Parameter FORMSOF Funktion in SQL Server

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 

aber dieses funktioniert OK

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 

ich diese Frage gefunden here

Antwort

2

Sie sind SucheI ng für "@SearchWord" statt "tax"!

Diese Abfrage:

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

Jede Idee, wie anfällig/Immun dies zu SQL-Injection-Angriffe sein würde? Siehe http://stackoverflow.com/questions/2176440/parameters-in-the-forms-of-function-and-sql- injection –

+1

@Andrew M: Ob dieser Code für die Injektion offen ist, hängt davon ab, woher @SearchWord stammt. Ich denke, es liegt am Programmierer, etwas über SQL-Injection zu wissen; es macht wenig Sinn, es in jeder Frage zu SQL zu diskutieren – Andomar

+1

Sorry, es war nicht als Kritik gemeint, mehr Aufwand, um die Art zu verstehen, dass der Parameter @SearchString dynamisch generiert wird, und ob das den gleichen Schutz bietet wie a einfachere parametrisierte Abfrage. Ich bin auch neu in der Syntax der FormsOf-Funktion, die scheinbar aus einer Zeichenfolge heraus aufgerufen wird. –

Verwandte Themen