Условие C # и SQL LIKE: '%' работает как подстановочный знак из одного символа - PullRequest
3 голосов
/ 03 марта 2011

У меня такой запрос в моем наборе данных (база данных находится в файле .mdf):

SELECT *
FROM TableName
WHERE SomeField LIKE @Param

Таблица TableName содержит запись Значение в поле SomeField.

Когда @Param равен Значени%, он отлично работает, но когда @Param равен Значен% или Значе%, он возвращает 0 строк.Значе%%% также работает.

Почему '%' работает как подстановочный знак из одного символа?

1 Ответ

5 голосов
/ 03 марта 2011

Ваша проблема в том, что вы должны использовать @param NVARCHAR, а не NCHAR

declare @Param nchar(255)
set @Param = N'Значе%'

Это действительно

N'Значе%             ...' (many more spaces)

Так что это не будет соответствовать вашим данным, а это

N'Значение             ...' (padded with spaces)
...