SQL Server Экранирует символ подчеркивания
-
08-06-2019 - |
Вопрос
Как мне избежать символа подчеркивания?
Я пишу что-то вроде следующего предложения where и хочу иметь возможность находить фактические записи с _d в конце.
Where Username Like '%_d'
Решение
Ссылка на T-SQL для LIKE для SQL Server 2000:
Вы можете использовать символы подстановки, соответствующие шаблону, в качестве буквенных символов.Чтобы использовать подстановочный знак в качестве литерального символа, заключите его в квадратные скобки.В таблице показано несколько примеров использования ключевого слова LIKE и подстановочных знаков [ ].
Для вашего случая:
... LIKE '%[_]d'
Другие советы
Очевидно, что решение @Lasse правильное, но есть другой способ решить вашу проблему:Оператор T-SQL LIKE
определяет необязательный ПОБЕГ предложение, которое позволяет вам объявить символ, который экранирует следующий символ в шаблоне.
Для вашего случая следующие предложения WHERE эквивалентны:
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
У меня это сработало, просто используй побег
'%\_%'