Z dokumentacji LIKE (Transact-SQL) :
Odtworzyłem Twój problem w poniższej tabeli:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Wynik:
(0 row(s) affected)
Jeśli jednak używasz NVARCHAR zamiast tego ten problem nie występuje:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Wyniki:
x
-----
nanaS
Jednak oryginalna tabela nie dała pożądanych wyników, nawet po konwersji do NVARCHAR w WHERE klauzula:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Wynik:
(0 row(s) affected)
Tak więc jednym z potencjalnych obejść byłoby użycie właściwego typu danych w pierwszej kolejności (a także zawsze przedrostek ciągów Unicode N'properly' . Jeśli nie możesz poprawić typu danych, możesz użyć RTRIM() obejście opublikowane przez Aushina, ale pamiętaj również o komentarzach HLGEM.