Dalla documentazione per LIKE (Transact-SQL) :
Ho riprodotto il tuo problema con la seguente tabella:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Risultato:
(0 row(s) affected)
Tuttavia, se usi NVARCHAR
invece, questo problema non si verifica:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Risultati:
x
-----
nanaS
Tuttavia la tabella originale non ha prodotto i risultati desiderati anche se la conversione in NVARCHAR
nel WHERE
clausola:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Risultato:
(0 row(s) affected)
Quindi una potenziale soluzione alternativa sarebbe quella di utilizzare in primo luogo il tipo di dati corretto (e anche sempre anteporre stringhe Unicode N'properly'
. Se non riesci a correggere il tipo di dati, puoi utilizzare RTRIM()
soluzione alternativa pubblicata da Aushin, ma tieni a mente anche i commenti di HLGEM.