2012-05-07 4 views
17

Я искал список специальных символов, которые должны быть экранированы на сервере ms sql, но не смогли найти один и большинство ответов, которые я видел для подобных вопросов, рекомендованных для использования параметризованных запросов. Я уже делаю, но рамки, которые я использую, для меня не ускользают.Символы, которые должны быть экранированы в Tsql

Таким образом, я думал, что я дам кучу тех, попробовать и посмотреть, что один не может .... и я попытался простой запрос

select * from x where value = '<characters>' 

в таком запросе я попробовал почти все символы, я мог бы найти на моей клавиатуре, и все они, похоже, работают ... кроме того, что Сингет цитирует .., что один терпит неудачу.

Таким образом, я хочу знать, список символов, которые являются недействительными и должны быть экранированы в MS SQL Server - TSQL и не хочу рисковать просто уйти от одинарной кавычки, а остальное, что может вызвать проблемы

Цените свою помощь

+2

А? Что случилось с параметризованными запросами? – SLaks

+0

они ведут себя по-разному в разных рамках ... не работают для меня –

+5

Тогда вы должны решить эту проблему. – SLaks

ответ

30

Единственный символ, который нуждается в экранировании в строке, - это одинарная кавычка (которая выполняется с двумя одинарными кавычками вместе). В противном случае это строка, и t-sql больше не будет беспокоиться об этом.

Если вы используете LIKE заявление см это ТАК тема Escape a string in SQL Server so that it is safe to use in LIKE expression

Как и в сторону, любая структура, которая не позволяет мне использовать параметры, которые не должным образом избежать вещи для меня, это трудно стоп. Попытка санировать ввод строки вручную - это как полагаться на метод вытаскивания; в конце концов, это тебя доставит.

+0

Спасибо HackedByChinese, это было единственным подтверждением, которое я получил после! –

+1

Впервые я когда-либо видел, как ускользает запрос на запрос вручную ... lol. – Corbin

+0

Спасибо Apache Cayenne за это! –

0

Не уверен, что это точно.

и . и другие подстановочные знаки в зависимости от запроса могут также потребоваться экранирование. где вы ищете точку. Это не удастся

select * from xxxx where field like '%.%' 
+1

Пожалуйста, не отрицайте свой ответ. Если вы считаете, что это неверно и хотите удалить его, нажмите ссылку «удалить» под своим сообщением. – Tunaki

0

Я просто хотел сказать, что _ (подчеркивание) также необходимо сбежать.

выберите * из продуктов, где SomeColumn как «FD [_]%»

Кстати, ничего плохого с параметризованных запросов, но иногда вы хотите, чтобы перейти в консоль управления SQL и быстро выполнить запрос, чтобы найти что-то из.

Смежные вопросы