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 déclaration ne serait pas:
DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%@LastName%'
Aucun résultat trouvé. Toutes les suggestions? Merci à l'avance.
3 réponses
Il devrait être:
...
WHERE LastName LIKE '%' + @LastName + '%';
Au Lieu de:
...
WHERE LastName LIKE '%@LastName%'
La bonne réponse est que, parce que le signe '%'
fait partie de votre expression de recherche, il devrait faire partie de votre valeur, donc partout où vous définissez @LastName
(que ce soit à partir d'un langage de programmation ou de TSQL) vous devriez le définir à '%' + [userinput] + '%'
Ou, dans votre exemple:
DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'
Vous pouvez essayer celui-ci, utilisé CONCAT
WHERE LastName LIKE Concat('%',@LastName,'%')