Выполнить точный поиск пробелов - PullRequest
0 голосов
/ 08 марта 2019

Я использую SQL Server 2017, и мои параметры сортировки SQL_LATIN1_GENERAL_CP1_CI_AS и ANSI_PADDING является значением по умолчанию (ON).

В моей таблице один из столбцов имеет тип NVARCHAR(255)и одно из значений вставляется следующим образом (включая пробел):

N'abc '

И когда я ищу его без пробела (N'abc'), я не хочу получить N'abc ', но он находитit.

Я знаю, что могу удалить пробелы во время вставки записи, но не могу изменить уже вставленные записи.

Как я могу помешать найти его с помощью таких запросов?

CREATE TABLE #tmp (c1 nvarchar(255))

INSERT INTO #tmp 
VALUES (N'abc ')

SELECT * 
FROM #tmp 
WHERE c1 = N'abc'

DROP TABLE #tmp

Я также нашел эту статью, но хочу предотвратить, когда я запрашиваю ее.

Почему SQL Server автоматически игнорирует пустое место в конце?

Я использую Linq-to-entity с C #, и с помощью SQL-запроса я могу выполнять поиск по ключевому слову LIKE без символа процента

SELECT * 
FROM #tmp 
WHERE c1 LIKE N'abc'

Но с Linq я не знаю, как написать этозапрос:

entity.Temp.Where(p => p.c1 == "abc");
entity.Temp.Where(p => p.c1.Equals("abc"));
entity.Temp.Where(p => p.c1.Contains("abc"));

1 Ответ

0 голосов
/ 08 марта 2019

Вы можете попробовать:

SELECT * FROM #tmp WHERE cast(c1 as varbinary(510)) = cast(N'abc' as varbinary(510))

Это будет очень медленно, если у вас много строк, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...