À partir de la documentation de LIKE (Transact-SQL) :
J'ai reproduit votre problème avec le tableau suivant :
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Résultat :
(0 row(s) affected)
Cependant, si vous utilisez NVARCHAR
à la place, ce problème ne se produit pas :
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Résultats :
x
-----
nanaS
Cependant, la table d'origine n'a pas produit les résultats souhaités même lors de la conversion en NVARCHAR
dans le WHERE
clause :
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Résultat :
(0 row(s) affected)
Ainsi, une solution de contournement potentielle serait d'utiliser le bon type de données en premier lieu (et également de toujours préfixer les chaînes Unicode N'properly'
. Si vous ne pouvez pas corriger le type de données, vous pouvez utiliser le RTRIM()
solution de contournement publiée par Aushin, mais gardez également à l'esprit les commentaires de HLGEM.