SQL Server избежать подчеркивания - PullRequest
284 голосов
/ 08 августа 2008

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

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

Where Username Like '%_d'

Ответы [ 4 ]

439 голосов
/ 08 августа 2008

Справочник по T-SQL для LIKE для SQL Server 2000 :

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

Для вашего случая:

... LIKE '%[_]d'
169 голосов
/ 02 мая 2012

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

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

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
1 голос
/ 08 октября 2018

Это сработало для меня, просто используйте побег '%\_%'

1 голос
/ 01 июня 2018

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

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...