print("select CustomerNo, CustomerName, Address, City, State, Zip,
Phone, Fax, ContactName, Email
from Customers where CustomerName like '%field%'");
Всем привет. Это простой вопрос, но я не мог понять, так как я новичок в tsql и sql в целом.
Я использую указанную выше хранимую процедуру для поиска. Мой вопрос для "% field%". Какую переменную вы используете или как она работает в tsql? например, «where Customers = @CustomerNo». как насчет подстановочного знака? как передать переменную вместе с подстановочным знаком? Думаю, я могу добавить в код "%" + "поле" + "%", но есть ли способ не делать этого?





Если вы используете =, вы говорите «равно», что не означает использования подстановочных знаков.
Если вы используете LIKE, который работает только с текстовыми полями, он может использовать подстановочные знаки.
Невозможно получить совпадения с подстановочными знаками с помощью =.
Обратите внимание, что в зависимости от данных поиск с подстановочными знаками может выполнять сканирование таблицы, поэтому я бы удостоверился, что вы хотите, прежде чем разрешить это.
Например, это будет сканирование таблицы:
WHERE CustomerID LIKE '%1'
т.е. все клиенты, у которых есть идентификатор клиента (который представляет собой текст), заканчивающийся на 1. Эту проблему нельзя решить с помощью индекса.
Последние мысли. Я не уверен на 100%, что понимаю, о чем вы спрашиваете. Не могли бы вы уточнить. Что конкретно вы имеете в виду, говоря «передать переменную вместе с подстановочным знаком»?
Подстановочные знаки - это просто часть строкового литерала, например "% field%" - это просто строка.
Вы можете объединить подстановочные знаки в свою строку, а затем использовать строку:
@Pattern = '%' + @CustomerName + '%';
...WHERE CustomerName LIKE @Pattern
Или вы можете написать выражение в SQL, включающее конкатенацию:
WHERE CustomerName LIKE '%' + @CustomerName + '%'
Для этого нет другого волшебного решения.
думаю, вы имели в виду: НРАВИТСЯ @Pattern
Благодарить. Я считаю, что это то, что я ищу.
Все очень просто. «=» и «Мне нравится» - оба оператора. Что вы можете делать после одного, вы можете делать за другим.
Итак, если вы используете C# и используете вызовы SQLClient, вы можете сказать:
string value;
...
value = "Some name";
...
myCommand.CommandText = "Select...from Customers Where CustomerName Like @Var";
myCommand.Parameters.AddWithValue("@Var", "%" + value + "%");
myCommand.ExecuteNonQuery();
Привет. Другие отправили ответ, соответствующий тому, что мне нужно. Спасибо вам всем.