#sql #sql-server
Вопрос:
У меня есть переменная varchar (max), которая имеет регулярное выражение, первоначально в разделе «Выбор» в аналогичной части можно добавить часть сортировки:
select name from Names where name like '-., * amp;~`;:''"#/()\' COLLATE Latin1_General_100_BIN2 ESCAPE ''
Я пытаюсь получить экранирующее мое регулярное выражение в переменной:
set @MatchExpression = '-., * amp;~`;:''"#/()\' COLLATE Latin1_General_100_BIN2 ESCAPE ''
SQL-сервер выдает мне следующую ошибку «Неправильный синтаксис рядом с ключевым словом «ESCAPE»».
Знаете ли вы, как избежать и добавить СОПОСТАВЛЕНИЕ Latin1_General_100_BIN2 в набор переменных
Комментарии:
1.
ESCAPE
в этом нет смысла, вы устанавливаете значение переменной, не используя aLIKE
.2. Прежде всего,
LIKE
реализует простые шаблоны, он не реализует регулярное выражение. Во-вторых, есть толькоLIKE
ESCAPE
пункт. Ты не можешь держатьсяESCAPE
за что попало. Вы можете включить в свою строку escape-последовательность, но тогда вы должны помнить, что ее следует размещатьESCAPE
везде, где вы ее используете. Вам лучше использоватьLIKE
собственные функции для цитирования специальных символов, которые окружают их[
и]
(и только%
,_
и[
даже нуждаются в экранировании-нет,
"
или что-либо еще, что обычно может быть экранировано в строках на других языках).