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

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

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

Where Username Like '%_d'
8.08.2008 11:56:36
5 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

... LIKE '%[_]d'
508
8.08.2008 11:59:36
о чувак! ... если это все еще не работает, убедитесь, что у вас есть правильный столбец.
Jens Frandsen 17.09.2018 21:54:48

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

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

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
197
2.05.2012 14:20:40
Чтобы завершить картину: ESCAPEпредложение является частью стандарта SQL и будет работать на любой СУБД, а не только на SQL Server.
a_horse_with_no_name 17.06.2015 07:46:29

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

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name
2
1.06.2018 19:50:03

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

1
8.10.2018 12:59:46

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

WHERE CHARINDEX('_', thingyoursearching) < 1

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

WHERE CHARINDEX('_', thingyoursearching) > 0

0
28.06.2019 18:58:42