Як уникнути символу підкреслення?
Я пишу щось на зразок наступного, де ставиться застереження і хочу, щоб можна було знайти фактичні записи з _d в кінці.
Where Username Like '%_d'
Як уникнути символу підкреслення?
Я пишу щось на зразок наступного, де ставиться застереження і хочу, щоб можна було знайти фактичні записи з _d в кінці.
Where Username Like '%_d'
Відповіді:
Ви можете використовувати символи підстановки, що відповідають символам, як буквальні символи. Щоб використовувати символ підстановки як буквальний символ, укладіть символ підстановки в дужки. У наступній таблиці показано кілька прикладів використання ключового слова 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 '^';
ESCAPE
пункт є частиною стандарту SQL і буде працювати в будь-якій СУБД, а не тільки в SQL Server.
Ці рішення повністю мають сенс. На жаль, жоден не працював для мене, як очікувалося. Замість того, щоб намагатися з цим займатись, я пішов із роботою:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Це працювало для мене, просто використовуй втечу
'%\_%'
Жодне з них не працювало для мене в SSIS v18.0, тому я б робив щось подібне: де
WHERE CHARINDEX('_', thingyoursearching) < 1
я намагаюся ігнорувати рядки з підкресленням в них. Якщо ви хочете знайти речі, які мають підкреслення, просто переверніть його:
WHERE CHARINDEX('_', thingyoursearching) > 0