Escape-символ в SQL Server - PullRequest
       59

Escape-символ в SQL Server

70 голосов
/ 28 февраля 2011

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

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

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

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

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

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

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

Ответы [ 6 ]

93 голосов
/ 28 февраля 2011

Вы можете избежать цитаты, как это:

select 'it''s escaped'

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

it's escaped
57 голосов
/ 28 февраля 2011

Если вы объединяете SQL в VARCHAR для выполнения (то есть динамический SQL), то я бы рекомендовал параметризовать SQL.Это дает преимущество защиты от внедрения SQL, а также означает, что вам не нужно беспокоиться о экранировании таких кавычек (что вы делаете, удваивая кавычки).*

попробуйте это:

DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'
33 голосов
/ 25 января 2013

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

Пример:

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

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

16 голосов
/ 28 февраля 2011

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

SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John''s 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

12 голосов
/ 28 февраля 2011

Экранирование кавычек в MSSQL выполняется двойной кавычкой, поэтому '' или "" создаст один экранированный ' и " соответственно.

0 голосов
/ 28 мая 2019

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

...