Если вы не хотите разрешать символы подстановки при сравнении строк, самое простое решение - избегать использования LIKE
и вместо этого использовать =
:
WHERE Username = 'The 7% Solution'
Стандартное поведение SQL LIKE
, который должен работать в любой реализации SQL, - это экранировать подстановочный знак, поставив перед ним символ экранирования.Вы можете выбрать символ, который должен использоваться в качестве escape-символа, но по какой-то причине в документации часто приводится пример @
, вероятно, только потому, что этот символ редко используется в текстовых шаблонах.
WHERE Username LIKE 'The 7@% Solution' ESCAPE '@'
Если вам нужно включить буквальный символ, который совпадает с вашим escape-символом, удвойте символ в шаблоне, тогда он соответствует одному буквенному символу.
WHERE Username LIKE 'Seti@@Home' ESCAPE '@'
Некоторые реализации SQL, например MySQL (см. LIKE в документах MySQL ), допустим, что управляющий символ по умолчанию равен \
:
WHERE Username LIKE 'The 7\% Solution'
Но другие бренды не определяют управляющий символ по умолчанию, например Oracle.См. LIKE в документации Oracle .Вы должны указать предложение ESCAPE
, иначе для групповых символов невозможно экранирование.
Microsoft SQL Server добавляет нестандартное сопоставление с шаблоном в предикат LIKE, поэтому вы можете искать диапазоны символов.Вы можете сделать подстановочный знак похожим на буквальный символ, заключив его в квадратные скобки, как будто это диапазон из одного символа.См. LIKE Transact-SQL .
WHERE Username LIKE 'The 7[%] Solution'
Извините, ответ на ваш вопрос не является полностью непротиворечивым от одной базы данных SQL к другой.