J'ai actuellement une requête SQL qui renvoie des résultats basés sur un nombre dynamique de mots-clés transmis.Requête SQL Search utilisant des mots-clés
Je convertis la liste de mots-clés dans une table et y adhère.
SELECT * FROM Table1
INNER JOIN
dbo.udf_List2Table(@Keywords, ',') ON (Field1 LIKE '%'+Keyword+'%')
Cela fonctionne bien, mais il renvoie toutes les lignes qui contiennent l'un des mots-clés qui sont suppiled. Ce que je voudrais faire est de retourner toutes les lignes qui contiennent tous les des mots-clés fournis.
Je suis sûr que vous ne pouvez pas faire cela en utilisant un JOIN. Est-ce que quelqu'un a des suggestions sur la façon dont je pourrais faire cela? J'essaie d'éviter le SQL dynamique.
Merci
Ceci est sujette à l'injection sql, si vous recherchez le mot clé '''); DROP TABLE table1; - ' –
@Jon, je pense que c'est simplement un exemple utilisant une variable et une chaîne de caractères pour illustrer la syntaxe. Dans le monde réel, je soupçonne que @Keywords serait un paramètre dans une procédure stockée qui ne serait pas vulnérable à l'injection SQL. –
@Jon: non, ce n'est pas le cas, tant que vous passez le mot-clé dans un paramètre lié. – Quassnoi