Aus der Dokumentation für LIKE (Transact-SQL) :
Ich habe Ihr Problem mit der folgenden Tabelle reproduziert:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Ergebnis:
(0 row(s) affected)
Wenn Sie jedoch NVARCHAR
verwenden stattdessen tritt dieses Problem nicht auf:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Ergebnisse:
x
-----
nanaS
Die ursprüngliche Tabelle lieferte jedoch nicht die gewünschten Ergebnisse, selbst wenn sie in NVARCHAR
konvertiert wurde im WHERE
Klausel:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Ergebnis:
(0 row(s) affected)
Eine mögliche Problemumgehung wäre also, überhaupt den richtigen Datentyp zu verwenden (und Unicode-Strings auch immer N'properly'
voranzustellen . Wenn Sie den Datentyp nicht korrekt machen können, können Sie RTRIM()
verwenden von Aushin gepostete Problemumgehung, aber denken Sie auch an die Kommentare von HLGEM.