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

188

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

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

Jedidja
источник

Ответы:

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

Jedidja
источник
14
WHERE column_name LIKE '%save 50[%] off!%'
Аарон Бертран
источник
0

В MySQL ,

WHERE column_name LIKE '%|%%' ESCAPE '|'

Кишан Соланки
источник
Но вопрос был о T-SQL.
Питер Мортенсен