Från dokumentationen för LIKE (Transact-SQL) :
Jag återskapade ditt problem med följande tabell:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultat:
(0 row(s) affected)
Men om du använder NVARCHAR
istället uppstår inte det här problemet:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultat:
x
-----
nanaS
Den ursprungliga tabellen gav dock inte de önskade resultaten även om man konverterade till NVARCHAR
i WHERE
klausul:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Resultat:
(0 row(s) affected)
Så en möjlig lösning skulle vara att använda rätt datatyp i första hand (och även alltid prefixa Unicode-strängar N'properly'
. Om du inte kan göra datatypen korrekt kan du använda RTRIM()
lösningen postad av Aushin, men håll HLGEMs kommentarer i åtanke också.