Dari dokumentasi untuk LIKE (Transact-SQL) :
Saya mereproduksi masalah Anda dengan tabel berikut:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Hasil:
(0 row(s) affected)
Namun jika Anda menggunakan NVARCHAR
sebaliknya, masalah ini tidak terjadi:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
Hasil:
x
-----
nanaS
Namun tabel asli tidak menghasilkan hasil yang diinginkan bahkan jika mengonversi ke NVARCHAR
di WHERE
klausa:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
Hasil:
(0 row(s) affected)
Jadi satu solusi potensial adalah menggunakan tipe data yang tepat sejak awal (dan juga selalu mengawali string Unicode N'properly'
. Jika Anda tidak dapat membuat tipe data yang benar, Anda dapat menggunakan RTRIM()
solusi yang diposting oleh Aushin, tetapi ingat juga komentar HLGEM.