De la documentación de LIKE (Transact-SQL) :
Reproduje tu problema con la siguiente tabla:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultado:
(0 row(s) affected)
Sin embargo, si usa NVARCHAR
en cambio, este problema no ocurre:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Resultados:
x
-----
nanaS
Sin embargo, la tabla original no produjo los resultados deseados incluso si se convirtió a NVARCHAR
en el WHERE
cláusula:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Resultado:
(0 row(s) affected)
Entonces, una posible solución alternativa sería usar el tipo de datos correcto en primer lugar (y también siempre prefijar cadenas Unicode N'properly'
. Si no puede hacer que el tipo de datos sea correcto, puede usar RTRIM()
solución alternativa publicada por Aushin, pero también tenga en cuenta los comentarios de HLGEM.