Использование подстановочных знаков в SQL-выражении Where - PullRequest
3 голосов
/ 04 ноября 2011

У меня есть следующий код:

SELECT ItemName 
FROM skuDetails 
WHERE skuDetails.SkuNumber = '" & search & "' 
      OR 
      skuDetails.ItemName = '%' + @search + '%'"

По сути, у меня есть база данных предметов, и у каждого предмета есть «номер SKU», который является уникальным номером для каждого предмета. В VB.NET у меня есть форма, в которой вы вводите либо номер SKU, либо название элемента в текстовое поле, а затем нажимаете клавишу ВВОД, чтобы найти в базе данных этот номер или имя, похожее на то, которое вы искали.

Переменная «search» в приведенном выше коде - это текст в текстовом поле, которое ищет пользователь.

Первый оператор WHERE работает, а второй после OR - нет. Я ожидаю, что это как-то связано с тем, как я использовал подстановочный знак. Что-то не так с этим утверждением?

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Вы должны использовать LIKE вместо оператора равенства для использования сопоставления с образцом:

OR skuDetails.ItemName LIKE  '%' ...

MSDN: сопоставление с образцом в условиях поиска

Ключевое слово LIKE выполняет поиск строки символов, даты или времени, соответствующих указанному шаблону.Для получения дополнительной информации см. Типы данных (Transact-SQL).Ключевое слово LIKE использует регулярное выражение, чтобы содержать шаблон, с которым сопоставляются значения.Шаблон содержит строку символов для поиска, которая может содержать любую комбинацию из четырех подстановочных знаков

4 голосов
/ 04 ноября 2011

Чтобы использовать подстановочный знак, вы должны сказать LIKE '%' + @search + '%'

Будьте осторожны, вы открываете себя для атак SQL-инъекций с помощью такого кода.

...