web-dev-qa-db-fra.com

T-SQL et la clause WHERE LIKE% Parameter%

J'essayais d'écrire une instruction 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, cela fonctionne:

SELECT Employee WHERE LastName LIKE '%ning%'

Cela renverrait les utilisateurs Flenning, Manning, Ningle, etc. Mais cette affirmation ne:

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

Aucun résultat trouvé. Aucune suggestion? Merci d'avance.

63
dp3

CA devrait etre:

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

Au lieu de:

...
WHERE LastName LIKE '%@LastName%'
136
Mahmoud Gamal

La bonne réponse est que, parce que le '%' _ le signe fait partie de votre expression de recherche, il doit faire partie de votre valeur, alors peu importe où vous SET@LastName (qu’il s’agisse d’un langage de programmation ou de TSQL), vous devez le définir sur '%' + [userinput] + '%'

ou, dans votre exemple:

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

vous pouvez essayer celui-ci, utilisé (~ ~ ~ ~] concat [~ # ~]

WHERE LastName LIKE Concat('%',@LastName,'%')
3
Ramgy Borja