Как избежать символа подчеркивания?
Я пишу что-то вроде следующего where where и хочу, чтобы иметь возможность находить фактические записи с _d в конце.
Where Username Like '%_d'
Как избежать символа подчеркивания?
Я пишу что-то вроде следующего where where и хочу, чтобы иметь возможность находить фактические записи с _d в конце.
Where Username Like '%_d'
T-SQL Reference для LIKE для SQL Server 2000:
Вы можете использовать символы соответствия шаблонов в качестве буквенных символов. Чтобы использовать подстановочный знак как буквенный символ, приложите символ подстановки в скобках. В таблице показаны несколько примеров использования ключевого слова LIKE и подстановочных символов [].
В вашем случае:
... LIKE '%[_]d'
Очевидно, что решение @Lasse верное, но есть другой способ решить вашу проблему: оператор T-SQL LIKE
определяет необязательный ESCAPE, который позволяет объявить символ, который выйдет из следующего символа в шаблон.
В вашем случае следующие предложения 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
Это сработало для меня, просто используйте escape '%\_%'
Ни один из них не работал для меня в SSIS v18.0, поэтому я хотел бы сделать что-то вроде этого: WHERE CHARINDEX('_', thingyoursearching) < 1
... где я пытаюсь игнорировать строки с подчеркиванием в них. Если вы хотите найти вещи, которые имеют подчеркивание, просто переверните их: WHERE CHARINDEX('_', thingyoursearching) > 0