SQL Server Экранирует символ подчеркивания

StackOverflow https://stackoverflow.com/questions/5821

  •  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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top