Я думаю, что вы нажимаете ограничения на символы, которые находятся за пределами вашей сортировки. У меня было какое-то странное поведение. Обратите внимание, что результат двух операторов 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), это может быть работоспособной альтернативой.
Каков тип данных столбца? –
Тип данных nvarchar (128) –