Escape-символ в SQL Server
Я хочу использовать цитату с escape-символом. Как я могу это сделать?
Я получил ошибку в SQL Server
незамкнутая кавычка после символьная строка.
Я пишу sql-запрос в переменной varchar, но я получил эту ошибку:
незамкнутая кавычка после символьная строка.
Я хочу использовать кавычки в качестве escape char.
спасибо вперед
5 ответов:
Если вы объединяете SQL в VARCHAR для выполнения (т. е. динамический SQL), то я бы рекомендовал параметризировать SQL. Это имеет то преимущество, что помогает защитить от SQL-инъекции плюс означает, что вам не нужно беспокоиться о том, чтобы избежать таких кавычек (что вы делаете, удваивая кавычки).
например, вместо того, чтобы делать
DECLARE @SQL NVARCHAR(1000) SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA''' EXECUTE(@SQL)
попробуйте это:
DECLARE @SQL NVARCHAR(1000) SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1' EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'
вы можете определить свой escape-символ, но вы можете использовать его только с
LIKE
предложения.пример:
SELECT columns FROM table WHERE column LIKE '%\%%' ESCAPE '\'
здесь он будет искать
%
во всей строке, и это, как можно использоватьESCAPE
кодSQL Server
.
вам нужно просто заменить
'
С''
внутри строкиSELECT colA, colB, colC FROM tableD WHERE colA = 'John''s Mobile'
вы также можете использовать
REPLACE(@name, '''', '''''')
Если генерация SQL динамическиесли вы хотите бежать внутри подобного оператора, то вам нужно использовать синтаксис ESCAPE
также стоит упомянуть, что вы оставляете себя открытыми для атак SQL-инъекций, если вы не рассматриваете это. Дополнительная информация в Google или: http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F