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

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

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

Where Username Like '%_d'

Ответ 1

T-SQL Reference для LIKE для SQL Server 2000:

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

В вашем случае:

... LIKE '%[_]d'

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Ни один из них не работал для меня в SSIS v18.0, поэтому я хотел бы сделать что-то вроде этого:

WHERE CHARINDEX('_', thingyoursearching) < 1

... где я пытаюсь игнорировать строки с подчеркиванием в них. Если вы хотите найти вещи, которые имеют подчеркивание, просто переверните их:

WHERE CHARINDEX('_', thingyoursearching) > 0