Символы, которые должны быть экранированы в Tsql
Я искал список специальных символов, которые должны быть экранированы в ms sql-сервере, но не смогли найти один и большинство ответов, которые я видел для подобных вопросов, которые рекомендуется использовать параметризованные запросы.. которые я уже делаю, но рамки Я использую не для меня.
Таким образом, я думал, что дам кучу этих попыток и посмотрю, какой из них не удается.... и я попробовал простой запрос
select * from x where value = '<characters>'
в таком запросе я пробовал почти все персонажи, которые я мог найти на своей клавиатуре, и все они, похоже, работают... кроме того, что Сингл цитирует.. тот не удается.
Таким образом, я хочу знать список недопустимых символов и должен быть экранирован в ms sql server - tsql и не хочу рисковать просто сбежать от одной кавычки и оставить остальное, что может вызвать проблемы.
Цените свою помощь
Ответы
Ответ 1
Единственный символ, который нуждается в экранировании в строке, - это одиночная кавычка (которая выполняется с двумя одинарными кавычками вместе). В противном случае строка и t-sql больше не будут беспокоиться об этом.
Если вы используете инструкцию LIKE, см. эту тему SOA Побег строки в SQL Server, чтобы ее можно было использовать в выражении LIKE
Как и в любом случае, любая инфраструктура, которая не позволяет мне использовать параметры, которые мне не помогают, - это трудная остановка. Попытка санировать ввод строки вручную - это как полагаться на метод вытаскивания; в конце концов он вас доставит.
Ответ 2
Не уверен, что это точно.
%
и .
и другие подстановочные знаки в зависимости от запроса могут также потребоваться экранирование.
где вы ищете точку. Это не сработает
select * from xxxx where field like '%.%'
Ответ 3
Я просто хотел сказать, что _ (подчеркивание) также необходимо экранировать.
выберите * из продуктов, где SomeColumn как "FD [_]% '
Кстати, ничего плохого в параметризованных запросах, но иногда вы хотите перейти на консоль управления SQL и быстро запустить запрос, чтобы найти что-то.