Как избежать одиночной кавычки в SQL Server?
Я пытаюсь insert
добавить некоторые текстовые данные в таблицу в SQL Server
9.
Текст включает в себя одну цитату (').
Как мне избежать этого?
Я пробовал использовать две одинарные кавычки, но это породило некоторые ошибки.
например. insert into my_table values('hi, my name' tim.');
Ответы
Ответ 1
Одиночные кавычки экранируются, удваивая их, так же, как вы показали нам в вашем примере. Следующий SQL иллюстрирует эту функциональность. Я тестировал его на SQL Server 2008:
DECLARE @my_table TABLE (
[value] VARCHAR(200)
)
INSERT INTO @my_table VALUES ('hi, my name' tim.')
SELECT * FROM @my_table
Результаты
value
==================
hi, my name tim.
Ответ 2
Если вы избежите одиночной кавычки с другой отдельной цитатой, которая не работает для вас (например, она не для одного из моих последних запросов REPLACE()
), вы можете использовать SET QUOTED_IDENTIFIER OFF
перед вашим запросом, затем SET QUOTED_IDENTIFIER ON
после ваш запрос.
Например
SET QUOTED_IDENTIFIER OFF;
UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");
SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again
Ответ 3
Как насчет:
insert into my_table values('hi, my name'+char(39)+ tim.')
Ответ 4
Удвоение цитаты должно было сработать, поэтому было бы странно, что это не сработало для вас; однако альтернативой является использование символов двойной кавычки, а не одиночных, вокруг строки. То есть.
insert into my_table values("hi, my name tim."
);
Ответ 5
2 способа обойти это:
для '
вы можете просто удвоить его в строке, например, select 'I''m happpy' -- will get: I'm happy
Для любого хакера, о котором вы не уверены: в sql-сервере вы можете получить любой юникод char, select unicode(':')
Итак, в этом случае вы также можете select 'I'+nchar(39)+'m happpy'
Ответ 6
Также нужно быть осторожным, действительно ли он хранится как классический ASCII (ASCII 27) или Unicode 2019 (который выглядит похожим, но не тем же).
Если это значение unicode, а затем экранирование 'в выражении WHERE (например, где blah =' Workers 'Comp) вернется, как и значение, которое вы ищете, не существует, если "in" Work Comp Comp значение unicode.
→ → → → → → → → → → → → → → → → → → → → > Простой способ подтвердить это - сделать какой-то открытый запрос, который вернет значение, которое вы ищете, а затем скопируйте и вставьте его в блокнот ++ или какой-либо другой редактор, поддерживающий unicode.
Разный вид между значением ascii и unicode должно быть очевидно для глаз, но если вы наклоняетесь к аналу, он будет отображаться как 27 (ascii) или 92 (unicode) в шестнадцатеричном редакторе.
Ответ 7
Это должно работать: использовать обратную косую черту и поставить двойную кавычку
"UPDATE my_table SET row =\"hi, my name tim.\";
Ответ 8
Это должно работать
DECLARE @singleQuote CHAR
SET @singleQuote = CHAR(39)
insert into my_table values('hi, my name'+ @singleQuote + tim.')
Ответ 9
Просто вставьте ', прежде чем что-либо вставлять. Это будет как escape-символ в sqlServer
Пример: когда у вас есть поле как, я в порядке. Вы можете сделать: ОБНОВИТЬ my_table SET row = 'Я в порядке.';
Ответ 10
Следующий синтаксис избавит вас от ТОЛЬКО ОДНОЙ кавычки:
SELECT ''''
Результатом будет одинарная кавычка. Может быть очень полезно для создания динамического SQL :).
![enter image description here]()
Ответ 11
Я согласен с Кори Ларсоном. Когда я использую SQL Server 2005 Я использую одиночную кавычку, чтобы избежать одиночной кавычки. Это звучит странно, но это работает для меня. Попытайтесь с этим.
Ссылка: SQL Server 2005 экранирование кавычек
Ответ 12
string value = "Abhishek's";
value = Replace(value,"'","''");