SQL Server - оператор запроса Sql со специальными символами
Мы хотим разрешить все нижеуказанные специальные символы в поисковом запросе, основываясь на том, какие результаты должны быть доступны для конечного пользователя. поэтому мы вводим все значения ниже в один столбец и теперь хотим запустить SQL-запрос с помощью оператора Like.
- ! @ # $% ^ & * () -_ = + [] {} \ |; ':", /<>.?
Я искал все возможные решения, такие как ESCAPE персонаж, квадратная скобка и так далее. Но это работает только до
выберите * из таблицы, где заголовок, как '!@#$%[^]' ESCAPE '\'
Как только я добавляю '&', строки не возвращаются.
Кажется, я что-то здесь упускаю.
2 ответа
Попробуйте этот простой способ, используя regular expression
следующее:
SELECT * FROM <YourTable>
WHERE <YourColumn> LIKE '%[!@#$%^&*()-_=+{}\|;'':",./[<>?]%' OR <YourColumn> LIKE '%]%';
Обратите внимание, что] нужно было брать отдельно, чтобы оно не заканчивало регулярное выражение.
Вы можете попробовать это:
declare @table table( title varchar(100))
insert into @table values ('!@#$%^&*()-_=+[]{}\|;'':",./<>?')
select *
from @table
where title like '!@#$%^&%' escape '\'
select *
from @table
where title like '!@#$%^&*()-_=+\[]%' escape '\'
select *
from @table
where title like '!@#$%^&*()-_=+\[]{}\\|%' escape '\'
select *
from @table
where title like '!@#$%^&*()-_=+\[]{}\\|;'':",./<>?%' escape '\'
Обязательно избегайте открывающейся квадратной скобки и обратной косой черты. Кроме того, нет необходимости ставить символ ^ в скобках.