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

sql-server

150106 просмотра

5 ответа

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

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

Where Username Like '%_d'
Автор: GateKiller Источник Размещён: 04.10.2019 05:07

Ответы (5)


473 плюса

Решение

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

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

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

... LIKE '%[_]d'
Автор: Lasse Vågsæther Karlsen Размещён: 08.08.2008 11:59

183 плюса

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

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

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Автор: Gerardo Lima Размещён: 02.05.2012 02:20

1 плюс

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

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name
Автор: Tek Mailer Размещён: 01.06.2018 07:50

0 плюса

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

Автор: Arnór Barkarson Размещён: 08.10.2018 12:59

0 плюса

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

WHERE CHARINDEX('_', thingyoursearching) < 1

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

WHERE CHARINDEX('_', thingyoursearching) > 0

Автор: wolverine87 Размещён: 28.06.2019 06:58
Вопросы из категории :
32x32