Uit de documentatie voor LIKE (Transact-SQL) :
Ik heb uw probleem gereproduceerd met de volgende tabel:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultaat:
(0 row(s) affected)
Als u echter NVARCHAR
. gebruikt in plaats daarvan doet dit probleem zich niet voor:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultaten:
x
-----
nanaS
De originele tabel leverde echter niet de gewenste resultaten op, zelfs niet bij conversie naar NVARCHAR
in de WHERE
clausule:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Resultaat:
(0 row(s) affected)
Dus een mogelijke oplossing zou zijn om in de eerste plaats het juiste gegevenstype te gebruiken (en ook altijd Unicode-tekenreeksen N'properly'
voor te zetten . Als u het gegevenstype niet correct kunt maken, kunt u de RTRIM()
. gebruiken tijdelijke oplossing gepost door Aushin, maar houd ook rekening met de opmerkingen van HLGEM.