SQL Server избежать подчеркивания

Как избежать символа подчеркивания?

Я пишу что-то вроде следующего предложения where и хочу иметь возможность находить фактические записи с _d в конце.

Where Username Like '%_d'

3 ответов


ссылка T-SQL для LIKE для SQL Server 2000:

шаблон можно использовать подстановочные символы как символы. Чтобы использовать подстановочный знак в качестве литерала, заключите его в скобки. В таблице приведены несколько примеров использования ключевого слова LIKE и подстановочных знаков [].

для вас:

... LIKE '%[_]d'

очевидно, что решение @Lasse правильно, но есть другой способ решить вашу проблему: T-SQL operator LIKE определяет необязательный побег предложение, которое позволяет объявить символ, который будет избегать следующего символа в шаблон.

для вашего случая, следующие где предложения эквивалентны:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

эти решения полностью имеют смысл. К сожалению, ни то, ни другое не сработало для меня, как ожидалось. Вместо того, чтобы пытаться возиться с ним, я пошел с работой вокруг:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name