Как мне избежать знака процента в T-SQL?


188

На этот вопрос также есть ответ , но в нем конкретно упоминается DB2.

Как искать строку , используя LIKEуже имеет процент %символ в нем? В LIKEоператор использует %символы для обозначения маски.

Ответы:


285

Используйте скобки. Так что искать на 75%

WHERE MyCol LIKE '%75[%]%'

Это проще, чем ESCAPE и является общим для большинства СУБД.


2
также обратите внимание, что вам не нужно экранировать символ процента в других конструкциях, таких как пользовательская функция, конкатенация и т. д.
Брон Дэвис


2
Вы можете избежать также подчеркивания символа подстановки тоже: [_]. Как вы избежите открытой квадратной скобки тогда? Как это: [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth

Использование предложения ESCAPE легче понять, чем механизм цитирования MS, поврежденный мозгом.
Suncat2000,

52

Вы можете использовать ESCAPEключевое слово с LIKE. Просто добавьте нужный символ (например, «!») К каждому из существующих %знаков в строке и затем добавьте ESCAPE '!'(или ваш символ по выбору) в конец запроса.

Например:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

Это заставит базу данных обрабатывать 80% как фактическую часть строки для поиска, а не 80 (подстановочный знак).

Документы MSDN для LIKE



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.