98 votes

T-SQL et la clause WHERE LIKE %Parameter%.

J'ai essayé d'écrire une déclaration qui utilise la clause WHERE LIKE '%text%', mais je ne reçois pas de résultats lorsque j'essaie d'utiliser un paramètre pour le texte. Par exemple, ceci fonctionne :

SELECT Employee WHERE LastName LIKE '%ning%'

Cela renverrait les utilisateurs Flenning, Manning, Ningle, etc. Mais pas cette déclaration :

DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%@LastName%'

Aucun résultat trouvé. Avez-vous des suggestions ? Merci d'avance.

184voto

Mahmoud Gamal Points 46598

Il devrait l'être :

...
WHERE LastName LIKE '%' + @LastName + '%';

Au lieu de :

...
WHERE LastName LIKE '%@LastName%'

18voto

Ramgy Borja Points 783

Vous pouvez essayer celui-ci, usagé CONCAT

WHERE LastName LIKE Concat('%',@LastName,'%')

17voto

swe Points 1244

La réponse correcte est, que, parce que le '%' -Le signe fait partie de l'expression de recherche, il devrait faire partie de la VALEUR, de sorte que, quel que soit l'endroit où vous fixez le signe, vous devez le faire. @LastName (que ce soit à partir d'un langage de programmation ou de TSQL), vous devez le définir comme suit '%' + [userinput] + '%'

ou, dans votre exemple :

DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X