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 '\'

Обязательно избегайте открывающейся квадратной скобки и обратной косой черты. Кроме того, нет необходимости ставить символ ^ в скобках.

Другие вопросы по тегам