Я думаю, что вы устанавливаете ограничения на символы, которые находятся за пределами вашей сортировки.У меня было странное поведение.Обратите внимание на результат двух SELECT здесь:
CREATE TABLE dbo.foo
(
id INT IDENTITY(1,1),
bar NVARCHAR(128)
);
INSERT dbo.foo(bar) SELECT N'foobar'
UNION
SELECT N'foo' + NCHAR(2028) + N'bar'
SELECT *
FROM dbo.foo
WHERE bar LIKE N'%' + NCHAR(2028) + '%';
TRUNCATE TABLE dbo.foo;
INSERT dbo.foo(bar)
SELECT N'foo' + NCHAR(2028) + N'bar'
SELECT *
FROM dbo.foo
WHERE bar LIKE N'%' + NCHAR(2028) + '%';
DROP TABLE dbo.foo;
Обратите внимание, что независимо от того, вставили ли мы одну или две строки, мы всегда возвращаем первую строку, даже если запрос один и тот же, а данные изменились.
К сожалению, вставка фактического значения NCHAR (2028) в SSMS не работает, потому что его нет в наборе поддерживаемых символов (я получаю глиф, похожий на вопросительный знак в Super Mario Brothers).В противном случае я бы просто предложил:
WHERE columnname LIKE N'%߬%';
Если вы можете сделать это из своего кода (и не беспокоиться о SSMS), это может быть работоспособной альтернативой.