Подтвердить что ты не робот

Escape Character в SQL Server

Я хочу использовать цитату с escape-символом. Как я могу сделать?

Я получил ошибку в SQL Server

Незакрытый кавычек после символьная строка.

Я пишу sql-запрос в переменной varchar, но я получил эту ошибку:

Незакрытый кавычек после символьная строка.

Я хочу использовать кавычку как escape char.

Заранее спасибо

4b9b3361

Ответ 1

Если вы объединяете 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'

Ответ 2

Вы можете избежать цитаты следующим образом:

select 'it' escaped'

результат будет

it escaped

Ответ 3

Вы можете определить свой escape-символ, но вы можете использовать его только с предложением LIKE.

Пример:

SELECT columns FROM table
WHERE column LIKE '%\%%' ESCAPE '\'

Здесь он будет искать % в цельной строке, и именно так можно использовать идентификатор ESCAPE в SQL Server.

Ответ 4

Вам нужно просто заменить ' с '' внутри вашей строки

SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John' Mobile'

Вы также можете использовать REPLACE(@name, '''', '''''') если генерируете SQL динамически

Если вы хотите выйти внутри оператора like, вам нужно использовать синтаксис ESCAPE

Стоит также отметить, что вы оставляете себя открытым для атак с использованием SQL-инъекций, если не учитываете это. Дополнительная информация в Google или: http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F

Ответ 5

Кавычки с экранированием в MSSQL выполняются двойной кавычкой, поэтому '' или "" будут выдавать один escaped ' и " соответственно.

Ответ 6

Чтобы код был легко читаемым, вы можете использовать квадратные скобки [] чтобы заключить строку, содержащую ' или наоборот.